group_theory.monoid_localizationMathlib.GroupTheory.MonoidLocalization

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

fix(group_theory/monoid_localization): fix timeout (#18846)

Splitting this into two definitions seems to make both much faster

Diff
@@ -1503,8 +1503,11 @@ variables [ordered_cancel_comm_monoid α] {s : submonoid α} {a₁ b₁ : α} {a
 @[to_additive] lemma mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ := iff.rfl
 @[to_additive] lemma mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ := iff.rfl
 
-@[to_additive] instance : ordered_cancel_comm_monoid (localization s) :=
-{ le_refl := λ a, localization.induction_on a $ λ a, le_rfl,
+-- declaring this separately to the instance below makes things faster
+@[to_additive] instance : partial_order (localization s) :=
+{ le := (≤),
+  lt := (<),
+  le_refl := λ a, localization.induction_on a $ λ a, le_rfl,
   le_trans := λ a b c, localization.induction_on₃ a b c $ λ a b c hab hbc, begin
     simp only [mk_le_mk] at ⊢ hab hbc,
     refine le_of_mul_le_mul_left' _,
@@ -1520,8 +1523,10 @@ variables [ordered_cancel_comm_monoid α] {s : submonoid α} {a₁ b₁ : α} {a
     exact λ hab hba, ⟨1, by rw [hab.antisymm hba]⟩,
     all_goals { intros, refl },
   end,
-  lt_iff_le_not_le := λ a b, localization.induction_on₂ a b $ λ a b, lt_iff_le_not_le,
-  mul_le_mul_left := λ a b, localization.induction_on₂ a b $ λ a b hab c,
+  lt_iff_le_not_le := λ a b, localization.induction_on₂ a b $ λ a b, lt_iff_le_not_le }
+
+@[to_additive] instance : ordered_cancel_comm_monoid (localization s) :=
+{ mul_le_mul_left := λ a b, localization.induction_on₂ a b $ λ a b hab c,
     localization.induction_on c $ λ c, begin
       simp only [mk_mul, mk_le_mk, submonoid.coe_mul, mul_mul_mul_comm _ _ c.1] at ⊢ hab,
       exact mul_le_mul_left' hab _,
@@ -1530,7 +1535,7 @@ variables [ordered_cancel_comm_monoid α] {s : submonoid α} {a₁ b₁ : α} {a
       simp only [mk_mul, mk_le_mk, submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at ⊢ hab,
       exact le_of_mul_le_mul_left' hab,
     end,
-  ..localization.comm_monoid _, ..localization.has_le, ..localization.has_lt }
+  ..localization.comm_monoid s, ..localization.partial_order }
 
 @[to_additive] instance decidable_le [decidable_rel ((≤) : α → α → Prop)] :
   decidable_rel ((≤) : localization s → localization s → Prop) :=

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

feat(group_theory/monoid_localization): Order (#18724)

Prove that every (linearly) ordered cancellative monoid can be embedded into a (linearly) ordered group, namely its Grothendieck group. Note that cancellativity is necessary since submonoids of a group are cancellative.

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -41,6 +41,9 @@ This defines the localization as a quotient type, `localization`, but the majori
 subsequent lemmas in the file are given in terms of localizations up to isomorphism, using maps
 which satisfy the characteristic predicate.
 
+The Grothendieck group construction corresponds to localizing at the top submonoid, namely making
+every element invertible.
+
 ## Implementation notes
 
 In maths it is natural to reason up to isomorphism, but in Lean we cannot naturally `rewrite` one
@@ -61,11 +64,20 @@ localization as a quotient type satisfies the characteristic predicate). The lem
 `mk_eq_monoid_of_mk'` hence gives you access to the results in the rest of the file, which are
 about the `localization_map.mk'` induced by any localization map.
 
+## TODO
+
+* Show that the localization at the top monoid is a group.
+* Generalise to (nonempty) subsemigroups.
+* If we acquire more bundlings, we can make `localization.mk_order_embedding` be an ordered monoid
+  embedding.
+
 ## Tags
 localization, monoid localization, quotient monoid, congruence relation, characteristic predicate,
-commutative monoid
+commutative monoid, grothendieck group
 -/
 
+open function
+
 namespace add_submonoid
 variables {M : Type*} [add_comm_monoid M] (S : add_submonoid M) (N : Type*) [add_comm_monoid N]
 
@@ -245,11 +257,11 @@ def mk (x : M) (y : S) : localization S := (r S).mk' (x, y)
 universes u
 
 /-- Dependent recursion principle for localizations: given elements `f a b : p (mk a b)`
-for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (wih the correct coercions),
+for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (with the correct coercions),
 then `f` is defined on the whole `localization S`. -/
 @[elab_as_eliminator, to_additive
-"Dependent recursion principle for `add_localizations`: given elements `f a b : p (mk a b)`
-for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (wih the correct coercions),
+"Dependent recursion principle for `add_localization`s: given elements `f a b : p (mk a b)`
+for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (with the correct coercions),
 then `f` is defined on the whole `add_localization S`."]
 def rec {p : localization S → Sort u}
   (f : ∀ (a : M) (b : S), p (mk a b))
@@ -259,6 +271,16 @@ def rec {p : localization S → Sort u}
 quot.rec (λ y, eq.rec (f y.1 y.2) (prod.mk.eta : (y.1, y.2) = y))
   (λ y z h, by { cases y, cases z, exact H h }) x
 
+/-- Copy of `quotient.rec_on_subsingleton₂` for `localization` -/
+@[elab_as_eliminator, to_additive "Copy of `quotient.rec_on_subsingleton₂` for `add_localization`"]
+def rec_on_subsingleton₂ {r : localization S → localization S → Sort u}
+  [h : ∀ (a c : M) (b d : S), subsingleton (r (mk a b) (mk c d))]
+  (x y : localization S)
+  (f : Π (a c : M) (b d : S), r (mk a b) (mk c d)) : r x y :=
+@quotient.rec_on_subsingleton₂' _ _ _ _ r
+  (prod.rec $ by exact λ _ _, prod.rec $ by exact λ _ _, h _ _ _ _) x y
+  (prod.rec $ by exact λ _ _, prod.rec $ by exact λ _ _, f _ _ _ _)
+
 attribute [irreducible] localization
 
 @[to_additive] lemma mk_mul (a c : M) (b d : S) : mk a b * mk c d = mk (a * c) (b * d) := rfl
@@ -1431,3 +1453,109 @@ end localization_with_zero_map
 end submonoid
 
 end comm_monoid_with_zero
+
+namespace localization
+variables {α : Type*} [cancel_comm_monoid α] {s : submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
+
+@[to_additive] lemma mk_left_injective (b : s) : injective (λ a, mk a b) :=
+λ c d h, by simpa [-mk_eq_monoid_of_mk', mk_eq_mk_iff, r_iff_exists] using h
+
+@[to_additive] lemma mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ :=
+by simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
+
+@[to_additive] instance decidable_eq [decidable_eq α] : decidable_eq (localization s) :=
+λ a b, localization.rec_on_subsingleton₂ a b $ λ a₁ a₂ b₁ b₂, decidable_of_iff' _ mk_eq_mk_iff'
+
+end localization
+
+/-! ### Order -/
+
+namespace localization
+variables {α : Type*}
+
+section ordered_cancel_comm_monoid
+variables [ordered_cancel_comm_monoid α] {s : submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
+
+@[to_additive] instance : has_le (localization s) :=
+⟨λ a b, localization.lift_on₂ a b (λ a₁ a₂ b₁ b₂, ↑b₂ * a₁ ≤ a₂ * b₁) $
+    λ a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd, propext begin
+    obtain ⟨e, he⟩ := r_iff_exists.1 hab,
+    obtain ⟨f, hf⟩ := r_iff_exists.1 hcd,
+    simp only [mul_right_inj] at he hf,
+    dsimp,
+    rw [←mul_le_mul_iff_right, mul_right_comm, ←hf, mul_right_comm, mul_right_comm ↑a₂,
+      mul_le_mul_iff_right, ←mul_le_mul_iff_left, mul_left_comm, he, mul_left_comm,
+      mul_left_comm ↑b₂, mul_le_mul_iff_left],
+  end⟩
+
+@[to_additive] instance : has_lt (localization s) :=
+⟨λ a b, localization.lift_on₂ a b (λ a₁ a₂ b₁ b₂, ↑b₂ * a₁ < a₂ * b₁) $
+    λ a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd, propext begin
+    obtain ⟨e, he⟩ := r_iff_exists.1 hab,
+    obtain ⟨f, hf⟩ := r_iff_exists.1 hcd,
+    simp only [mul_right_inj] at he hf,
+    dsimp,
+    rw [←mul_lt_mul_iff_right, mul_right_comm, ←hf, mul_right_comm, mul_right_comm ↑a₂,
+      mul_lt_mul_iff_right, ←mul_lt_mul_iff_left, mul_left_comm, he, mul_left_comm,
+      mul_left_comm ↑b₂, mul_lt_mul_iff_left],
+  end⟩
+
+@[to_additive] lemma mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ := iff.rfl
+@[to_additive] lemma mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ := iff.rfl
+
+@[to_additive] instance : ordered_cancel_comm_monoid (localization s) :=
+{ le_refl := λ a, localization.induction_on a $ λ a, le_rfl,
+  le_trans := λ a b c, localization.induction_on₃ a b c $ λ a b c hab hbc, begin
+    simp only [mk_le_mk] at ⊢ hab hbc,
+    refine le_of_mul_le_mul_left' _,
+    { exact b.2 },
+    rw [mul_left_comm],
+    refine (mul_le_mul_left' hab _).trans _,
+    rwa [mul_left_comm, mul_left_comm ↑b.2, mul_le_mul_iff_left],
+  end,
+  le_antisymm := λ a b, begin
+    induction a with a₁ a₂,
+    induction b with b₁ b₂,
+    simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists],
+    exact λ hab hba, ⟨1, by rw [hab.antisymm hba]⟩,
+    all_goals { intros, refl },
+  end,
+  lt_iff_le_not_le := λ a b, localization.induction_on₂ a b $ λ a b, lt_iff_le_not_le,
+  mul_le_mul_left := λ a b, localization.induction_on₂ a b $ λ a b hab c,
+    localization.induction_on c $ λ c, begin
+      simp only [mk_mul, mk_le_mk, submonoid.coe_mul, mul_mul_mul_comm _ _ c.1] at ⊢ hab,
+      exact mul_le_mul_left' hab _,
+    end,
+  le_of_mul_le_mul_left := λ a b c, localization.induction_on₃ a b c $ λ a b c hab, begin
+      simp only [mk_mul, mk_le_mk, submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at ⊢ hab,
+      exact le_of_mul_le_mul_left' hab,
+    end,
+  ..localization.comm_monoid _, ..localization.has_le, ..localization.has_lt }
+
+@[to_additive] instance decidable_le [decidable_rel ((≤) : α → α → Prop)] :
+  decidable_rel ((≤) : localization s → localization s → Prop) :=
+λ a b, localization.rec_on_subsingleton₂ a b $ λ a₁ a₂ b₁ b₂, decidable_of_iff' _ mk_le_mk
+
+@[to_additive] instance decidable_lt [decidable_rel ((<) : α → α → Prop)] :
+  decidable_rel ((<) : localization s → localization s → Prop) :=
+λ a b, localization.rec_on_subsingleton₂ a b $ λ a₁ a₂ b₁ b₂, decidable_of_iff' _ mk_lt_mk
+
+/-- An ordered cancellative monoid injects into its localization by sending `a` to `a / b`. -/
+@[to_additive "An ordered cancellative monoid injects into its localization by sending `a` to
+`a - b`.", simps] def mk_order_embedding (b : s) : α ↪o localization s :=
+{ to_fun := λ a, mk a b,
+  inj' := mk_left_injective _,
+  map_rel_iff' := λ a b, by simp [-mk_eq_monoid_of_mk', mk_le_mk] }
+
+end ordered_cancel_comm_monoid
+
+@[to_additive] instance [linear_ordered_cancel_comm_monoid α] {s : submonoid α} :
+  linear_ordered_cancel_comm_monoid (localization s) :=
+{ le_total := λ a b, localization.induction_on₂ a b $ λ _ _,
+    by { simp_rw mk_le_mk, exact le_total _ _ },
+  decidable_le := @localization.decidable_le α _ _ has_le.le.decidable,
+  decidable_lt := @localization.decidable_lt α _ _ has_lt.lt.decidable,
+  decidable_lt := localization.decidable_eq,
+  ..localization.ordered_cancel_comm_monoid }
+
+end localization

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -283,7 +283,7 @@ instance : CommMonoid (Localization S) where
   npow_zero := show ∀ x : Localization S, Localization.npow S 0 x = 1 from pow_zero
   npow_succ :=
     show ∀ (n : ℕ) (x : Localization S), Localization.npow S n.succ x = x * Localization.npow S n x
-      from fun n x => pow_succ x n
+      from fun n x => pow_succ' x n
 
 variable {S}
 
Diff
@@ -754,9 +754,9 @@ variable (f : LocalizationMap S N)
 theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
     f.toMap x = f.toMap y :=
   by
-  rw [f.to_map.map_mul, f.to_map.map_mul] at h 
+  rw [f.to_map.map_mul, f.to_map.map_mul] at h
   cases' f.map_units c with u hu
-  rw [← hu] at h 
+  rw [← hu] at h
   exact (Units.mul_right_inj u).1 h
 #align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancel
 #align add_submonoid.localization_map.map_right_cancel AddSubmonoid.LocalizationMap.map_right_cancel
@@ -1268,7 +1268,7 @@ theorem lift_injective_iff :
     constructor
     · exact f.eq_of_eq hg
     · intro h
-      rw [← f.lift_eq hg, ← f.lift_eq hg] at h 
+      rw [← f.lift_eq hg, ← f.lift_eq hg] at h
       exact H h
   · intro H z w h
     obtain ⟨x, hx⟩ := f.surj z
@@ -1725,7 +1725,7 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
           ⟨fun ⟨c, hc⟩ =>
             let ⟨d, hd⟩ := k.to_equiv.surjective c
             ⟨⟨d, H' ▸ show k d ∈ S from hd.symm ▸ c.2⟩, by
-              erw [← hd, ← k.map_mul, ← k.map_mul] at hc  <;> exact k.to_equiv.injective hc⟩,
+              erw [← hd, ← k.map_mul, ← k.map_mul] at hc <;> exact k.to_equiv.injective hc⟩,
             fun ⟨c, hc⟩ =>
             ⟨⟨k c, H ▸ Set.mem_image_of_mem k c.2⟩, by
               erw [← k.map_mul] <;> rw [hc, k.map_mul] <;> rfl⟩⟩
@@ -2236,7 +2236,7 @@ instance : LE (Localization s) :=
         (by
           obtain ⟨e, he⟩ := r_iff_exists.1 hab
           obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
-          simp only [mul_right_inj] at he hf 
+          simp only [mul_right_inj] at he hf
           dsimp
           rw [← mul_le_mul_iff_right, mul_right_comm, ← hf, mul_right_comm, mul_right_comm ↑a₂,
             mul_le_mul_iff_right, ← mul_le_mul_iff_left, mul_left_comm, he, mul_left_comm,
@@ -2251,7 +2251,7 @@ instance : LT (Localization s) :=
         (by
           obtain ⟨e, he⟩ := r_iff_exists.1 hab
           obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
-          simp only [mul_right_inj] at he hf 
+          simp only [mul_right_inj] at he hf
           dsimp
           rw [← mul_lt_mul_iff_right, mul_right_comm, ← hf, mul_right_comm, mul_right_comm ↑a₂,
             mul_lt_mul_iff_right, ← mul_lt_mul_iff_left, mul_left_comm, he, mul_left_comm,
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2019 Amelia Livingston. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Amelia Livingston
 -/
-import Mathbin.GroupTheory.Congruence
-import Mathbin.GroupTheory.Submonoid.Membership
-import Mathbin.Algebra.Group.Units
+import GroupTheory.Congruence
+import GroupTheory.Submonoid.Membership
+import Algebra.Group.Units
 
 #align_import group_theory.monoid_localization from "leanprover-community/mathlib"@"10ee941346c27bdb5e87bb3535100c0b1f08ac41"
 
Diff
@@ -552,14 +552,14 @@ instance [SMul R M] [SMul Rᵐᵒᵖ M] [IsScalarTower R M M] [IsScalarTower R
 instance [Monoid R] [MulAction R M] [IsScalarTower R M M] : MulAction R (Localization S)
     where
   one_smul := Localization.ind <| Prod.rec <| by intros; simp only [Localization.smul_mk, one_smul]
-  mul_smul s₁ s₂ :=
+  hMul_smul s₁ s₂ :=
     Localization.ind <| Prod.rec <| by intros; simp only [Localization.smul_mk, mul_smul]
 
 instance [Monoid R] [MulDistribMulAction R M] [IsScalarTower R M M] :
     MulDistribMulAction R (Localization S)
     where
   smul_one s := by simp only [← Localization.mk_one, Localization.smul_mk, smul_one]
-  smul_mul s x y :=
+  smul_hMul s x y :=
     Localization.induction_on₂ x y <|
       Prod.rec fun r₁ x₁ =>
         Prod.rec fun r₂ x₂ => by simp only [Localization.smul_mk, Localization.mk_mul, smul_mul']
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2019 Amelia Livingston. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Amelia Livingston
-
-! This file was ported from Lean 3 source module group_theory.monoid_localization
-! leanprover-community/mathlib commit 10ee941346c27bdb5e87bb3535100c0b1f08ac41
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.GroupTheory.Congruence
 import Mathbin.GroupTheory.Submonoid.Membership
 import Mathbin.Algebra.Group.Units
 
+#align_import group_theory.monoid_localization from "leanprover-community/mathlib"@"10ee941346c27bdb5e87bb3535100c0b1f08ac41"
+
 /-!
 # Localizations of commutative monoids
 
Diff
@@ -137,6 +137,7 @@ namespace Localization
 run_cmd
   to_additive.map_namespace `localization `add_localization
 
+#print Localization.r /-
 /-- The congruence relation on `M × S`, `M` a `comm_monoid` and `S` a submonoid of `M`, whose
 quotient is the localization of `M` at `S`, defined as the unique congruence relation on
 `M × S` such that for any other congruence relation `s` on `M × S` where for all `y ∈ S`,
@@ -148,7 +149,9 @@ def r (S : Submonoid M) : Con (M × S) :=
   sInf {c | ∀ y : S, c 1 (y, y)}
 #align localization.r Localization.r
 #align add_localization.r AddLocalization.r
+-/
 
+#print Localization.r' /-
 /-- An alternate form of the congruence relation on `M × S`, `M` a `comm_monoid` and `S` a
 submonoid of `M`, whose quotient is the localization of `M` at `S`. -/
 @[to_additive
@@ -173,7 +176,9 @@ def r' : Con (M × S) :=
       _ = (t₂ * t₁ : M) * (a.2 * c.2 * (b.1 * d.1)) := by rw [ht₁, ht₂]; ac_rfl
 #align localization.r' Localization.r'
 #align add_localization.r' AddLocalization.r'
+-/
 
+#print Localization.r_eq_r' /-
 /-- The congruence relation used to localize a `comm_monoid` at a submonoid can be expressed
 equivalently as an infimum (see `localization.r`) or explicitly
 (see `localization.r'`). -/
@@ -190,14 +195,17 @@ theorem r_eq_r' : r S = r' S :=
       simp_rw [mul_assoc, ht, mul_comm y q]
 #align localization.r_eq_r' Localization.r_eq_r'
 #align add_localization.r_eq_r' AddLocalization.r_eq_r'
+-/
 
 variable {S}
 
+#print Localization.r_iff_exists /-
 @[to_additive]
 theorem r_iff_exists {x y : M × S} : r S x y ↔ ∃ c : S, ↑c * (↑y.2 * x.1) = c * (x.2 * y.1) := by
   rw [r_eq_r' S] <;> rfl
 #align localization.r_iff_exists Localization.r_iff_exists
 #align add_localization.r_iff_exists AddLocalization.r_iff_exists
+-/
 
 end Localization
 
@@ -282,6 +290,7 @@ instance : CommMonoid (Localization S) where
 
 variable {S}
 
+#print Localization.mk /-
 /-- Given a `comm_monoid` `M` and submonoid `S`, `mk` sends `x : M`, `y ∈ S` to the equivalence
 class of `(x, y)` in the localization of `M` at `S`. -/
 @[to_additive
@@ -290,15 +299,19 @@ def mk (x : M) (y : S) : Localization S :=
   (r S).mk' (x, y)
 #align localization.mk Localization.mk
 #align add_localization.mk AddLocalization.mk
+-/
 
+#print Localization.mk_eq_mk_iff /-
 @[to_additive]
 theorem mk_eq_mk_iff {a c : M} {b d : S} : mk a b = mk c d ↔ r S ⟨a, b⟩ ⟨c, d⟩ :=
   (r S).Eq
 #align localization.mk_eq_mk_iff Localization.mk_eq_mk_iff
 #align add_localization.mk_eq_mk_iff AddLocalization.mk_eq_mk_iff
+-/
 
 universe u
 
+#print Localization.rec /-
 /-- Dependent recursion principle for localizations: given elements `f a b : p (mk a b)`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (with the correct coercions),
 then `f` is defined on the whole `localization S`. -/
@@ -314,7 +327,9 @@ def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
     (fun y z h => by cases y; cases z; exact H h) x
 #align localization.rec Localization.rec
 #align add_localization.rec AddLocalization.rec
+-/
 
+#print Localization.recOnSubsingleton₂ /-
 /-- Copy of `quotient.rec_on_subsingleton₂` for `localization` -/
 @[elab_as_elim, to_additive "Copy of `quotient.rec_on_subsingleton₂` for `add_localization`"]
 def recOnSubsingleton₂ {r : Localization S → Localization S → Sort u}
@@ -324,32 +339,42 @@ def recOnSubsingleton₂ {r : Localization S → Localization S → Sort u}
     (Prod.rec fun _ _ => Prod.rec fun _ _ => f _ _ _ _)
 #align localization.rec_on_subsingleton₂ Localization.recOnSubsingleton₂
 #align add_localization.rec_on_subsingleton₂ AddLocalization.recOnSubsingleton₂
+-/
 
+#print Localization.mk_mul /-
 @[to_additive]
 theorem mk_mul (a c : M) (b d : S) : mk a b * mk c d = mk (a * c) (b * d) :=
   rfl
 #align localization.mk_mul Localization.mk_mul
 #align add_localization.mk_add AddLocalization.mk_add
+-/
 
+#print Localization.mk_one /-
 @[to_additive]
 theorem mk_one : mk 1 (1 : S) = 1 :=
   rfl
 #align localization.mk_one Localization.mk_one
 #align add_localization.mk_zero AddLocalization.mk_zero
+-/
 
+#print Localization.mk_pow /-
 @[to_additive]
 theorem mk_pow (n : ℕ) (a : M) (b : S) : mk a b ^ n = mk (a ^ n) (b ^ n) :=
   rfl
 #align localization.mk_pow Localization.mk_pow
 #align add_localization.mk_nsmul AddLocalization.mk_nsmul
+-/
 
+#print Localization.ndrec_mk /-
 @[simp, to_additive]
 theorem ndrec_mk {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b)) (H) (a : M)
     (b : S) : (rec f H (mk a b) : p (mk a b)) = f a b :=
   rfl
 #align localization.rec_mk Localization.ndrec_mk
 #align add_localization.rec_mk AddLocalization.ndrec_mk
+-/
 
+#print Localization.liftOn /-
 /-- Non-dependent recursion principle for localizations: given elements `f a b : p`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d`,
 then `f` is defined on the whole `localization S`. -/
@@ -361,26 +386,34 @@ def liftOn {p : Sort u} (x : Localization S) (f : M → S → p)
   rec f (fun a c b d h => by rw [eq_rec_constant, H h]) x
 #align localization.lift_on Localization.liftOn
 #align add_localization.lift_on AddLocalization.liftOn
+-/
 
+#print Localization.liftOn_mk /-
 @[to_additive]
 theorem liftOn_mk {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S) :
     liftOn (mk a b) f H = f a b :=
   rfl
 #align localization.lift_on_mk Localization.liftOn_mk
 #align add_localization.lift_on_mk AddLocalization.liftOn_mk
+-/
 
+#print Localization.ind /-
 @[elab_as_elim, to_additive]
 theorem ind {p : Localization S → Prop} (H : ∀ y : M × S, p (mk y.1 y.2)) (x) : p x :=
   rec (fun a b => H (a, b)) (fun _ _ _ _ _ => rfl) x
 #align localization.ind Localization.ind
 #align add_localization.ind AddLocalization.ind
+-/
 
+#print Localization.induction_on /-
 @[elab_as_elim, to_additive]
 theorem induction_on {p : Localization S → Prop} (x) (H : ∀ y : M × S, p (mk y.1 y.2)) : p x :=
   ind H x
 #align localization.induction_on Localization.induction_on
 #align add_localization.induction_on AddLocalization.induction_on
+-/
 
+#print Localization.liftOn₂ /-
 /-- Non-dependent recursion principle for localizations: given elements `f x y : p`
 for all `x` and `y`, such that `r S x x'` and `r S y y'` implies `f x y = f x' y'`,
 then `f` is defined on the whole `localization S`. -/
@@ -396,48 +429,62 @@ def liftOn₂ {p : Sort u} (x y : Localization S) (f : M → S → M → S → p
     induction_on y fun ⟨c, d⟩ => H hx ((r S).refl _)
 #align localization.lift_on₂ Localization.liftOn₂
 #align add_localization.lift_on₂ AddLocalization.liftOn₂
+-/
 
+#print Localization.liftOn₂_mk /-
 @[to_additive]
 theorem liftOn₂_mk {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
     liftOn₂ (mk a b) (mk c d) f H = f a b c d :=
   rfl
 #align localization.lift_on₂_mk Localization.liftOn₂_mk
 #align add_localization.lift_on₂_mk AddLocalization.liftOn₂_mk
+-/
 
+#print Localization.induction_on₂ /-
 @[elab_as_elim, to_additive]
 theorem induction_on₂ {p : Localization S → Localization S → Prop} (x y)
     (H : ∀ x y : M × S, p (mk x.1 x.2) (mk y.1 y.2)) : p x y :=
   induction_on x fun x => induction_on y <| H x
 #align localization.induction_on₂ Localization.induction_on₂
 #align add_localization.induction_on₂ AddLocalization.induction_on₂
+-/
 
+#print Localization.induction_on₃ /-
 @[elab_as_elim, to_additive]
 theorem induction_on₃ {p : Localization S → Localization S → Localization S → Prop} (x y z)
     (H : ∀ x y z : M × S, p (mk x.1 x.2) (mk y.1 y.2) (mk z.1 z.2)) : p x y z :=
   induction_on₂ x y fun x y => induction_on z <| H x y
 #align localization.induction_on₃ Localization.induction_on₃
 #align add_localization.induction_on₃ AddLocalization.induction_on₃
+-/
 
+#print Localization.one_rel /-
 @[to_additive]
 theorem one_rel (y : S) : r S 1 (y, y) := fun b hb => hb y
 #align localization.one_rel Localization.one_rel
 #align add_localization.zero_rel AddLocalization.zero_rel
+-/
 
+#print Localization.r_of_eq /-
 @[to_additive]
 theorem r_of_eq {x y : M × S} (h : ↑y.2 * x.1 = ↑x.2 * y.1) : r S x y :=
   r_iff_exists.2 ⟨1, by rw [h]⟩
 #align localization.r_of_eq Localization.r_of_eq
 #align add_localization.r_of_eq AddLocalization.r_of_eq
+-/
 
+#print Localization.mk_self /-
 @[to_additive]
 theorem mk_self (a : S) : mk (a : M) a = 1 := by symm; rw [← mk_one, mk_eq_mk_iff]; exact one_rel a
 #align localization.mk_self Localization.mk_self
 #align add_localization.mk_self AddLocalization.mk_self
+-/
 
 section Scalar
 
 variable {R R₁ R₂ : Type _}
 
+#print Localization.smul /-
 /-- Scalar multiplication in a monoid localization is defined as `c • ⟨a, b⟩ = ⟨c • a, b⟩`. -/
 protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Localization S) :
     Localization S :=
@@ -456,13 +503,16 @@ protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Loc
           ⟨fun r m₁ m₂ => by simp_rw [smul_eq_mul, mul_comm m₁, smul_mul_assoc]⟩
         simp only [mul_smul_comm, ht])
 #align localization.smul Localization.smul
+-/
 
 instance [SMul R M] [IsScalarTower R M M] : SMul R (Localization S) where smul := Localization.smul
 
+#print Localization.smul_mk /-
 theorem smul_mk [SMul R M] [IsScalarTower R M M] (c : R) (a b) :
     c • (mk a b : Localization S) = mk (c • a) b := by unfold SMul.smul Localization.smul;
   apply lift_on_mk
 #align localization.smul_mk Localization.smul_mk
+-/
 
 instance [SMul R₁ M] [SMul R₂ M] [IsScalarTower R₁ M M] [IsScalarTower R₂ M M]
     [SMulCommClass R₁ R₂ M] : SMulCommClass R₁ R₂ (Localization S)
@@ -474,6 +524,7 @@ instance [SMul R₁ M] [SMul R₂ M] [IsScalarTower R₁ M M] [IsScalarTower R
     where smul_assoc s t :=
     Localization.ind <| Prod.rec fun r x => by simp only [smul_mk, smul_assoc s t r]
 
+#print Localization.smulCommClass_right /-
 instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
     SMulCommClass R (Localization S) (Localization S)
     where smul_comm s :=
@@ -483,7 +534,9 @@ instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
           Prod.rec fun r₂ x₂ => by
             simp only [smul_mk, smul_eq_mul, mk_mul, mul_comm r₁, smul_mul_assoc]
 #align localization.smul_comm_class_right Localization.smulCommClass_right
+-/
 
+#print Localization.isScalarTower_right /-
 instance isScalarTower_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
     IsScalarTower R (Localization S) (Localization S)
     where smul_assoc s :=
@@ -492,6 +545,7 @@ instance isScalarTower_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
         Localization.ind <|
           Prod.rec fun r₂ x₂ => by simp only [smul_mk, smul_eq_mul, mk_mul, smul_mul_assoc]
 #align localization.is_scalar_tower_right Localization.isScalarTower_right
+-/
 
 instance [SMul R M] [SMul Rᵐᵒᵖ M] [IsScalarTower R M M] [IsScalarTower Rᵐᵒᵖ M M]
     [IsCentralScalar R M] : IsCentralScalar R (Localization S)
@@ -521,6 +575,7 @@ variable {S N}
 
 namespace MonoidHom
 
+#print MonoidHom.toLocalizationMap /-
 /-- Makes a localization map from a `comm_monoid` hom satisfying the characteristic predicate. -/
 @[to_additive
       "Makes a localization map from an `add_comm_monoid` hom satisfying the characteristic\npredicate."]
@@ -533,6 +588,7 @@ def toLocalizationMap (f : M →* N) (H1 : ∀ y : S, IsUnit (f y))
     eq_iff_exists' := H3 }
 #align monoid_hom.to_localization_map MonoidHom.toLocalizationMap
 #align add_monoid_hom.to_localization_map AddMonoidHom.toLocalizationMap
+-/
 
 end MonoidHom
 
@@ -549,43 +605,56 @@ abbrev toMap (f : LocalizationMap S N) :=
 #align add_submonoid.localization_map.to_map AddSubmonoid.LocalizationMap.toMap
 -/
 
+#print Submonoid.LocalizationMap.ext /-
 @[ext, to_additive]
 theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f = g := by
   rcases f with ⟨⟨⟩⟩; rcases g with ⟨⟨⟩⟩; simp only; exact funext h
 #align submonoid.localization_map.ext Submonoid.LocalizationMap.ext
 #align add_submonoid.localization_map.ext AddSubmonoid.LocalizationMap.ext
+-/
 
+#print Submonoid.LocalizationMap.ext_iff /-
 @[to_additive]
 theorem ext_iff {f g : LocalizationMap S N} : f = g ↔ ∀ x, f.toMap x = g.toMap x :=
   ⟨fun h x => h ▸ rfl, ext⟩
 #align submonoid.localization_map.ext_iff Submonoid.LocalizationMap.ext_iff
 #align add_submonoid.localization_map.ext_iff AddSubmonoid.LocalizationMap.ext_iff
+-/
 
+#print Submonoid.LocalizationMap.toMap_injective /-
 @[to_additive]
 theorem toMap_injective : Function.Injective (@LocalizationMap.toMap _ _ S N _) := fun _ _ h =>
   ext <| MonoidHom.ext_iff.1 h
 #align submonoid.localization_map.to_map_injective Submonoid.LocalizationMap.toMap_injective
 #align add_submonoid.localization_map.to_map_injective AddSubmonoid.LocalizationMap.toMap_injective
+-/
 
+#print Submonoid.LocalizationMap.map_units /-
 @[to_additive]
 theorem map_units (f : LocalizationMap S N) (y : S) : IsUnit (f.toMap y) :=
   f.2 y
 #align submonoid.localization_map.map_units Submonoid.LocalizationMap.map_units
 #align add_submonoid.localization_map.map_add_units AddSubmonoid.LocalizationMap.map_addUnits
+-/
 
+#print Submonoid.LocalizationMap.surj /-
 @[to_additive]
 theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2 = f.toMap x.1 :=
   f.3 z
 #align submonoid.localization_map.surj Submonoid.LocalizationMap.surj
 #align add_submonoid.localization_map.surj AddSubmonoid.LocalizationMap.surj
+-/
 
+#print Submonoid.LocalizationMap.eq_iff_exists /-
 @[to_additive]
 theorem eq_iff_exists (f : LocalizationMap S N) {x y} :
     f.toMap x = f.toMap y ↔ ∃ c : S, ↑c * x = c * y :=
   f.4 x y
 #align submonoid.localization_map.eq_iff_exists Submonoid.LocalizationMap.eq_iff_exists
 #align add_submonoid.localization_map.eq_iff_exists AddSubmonoid.LocalizationMap.eq_iff_exists
+-/
 
+#print Submonoid.LocalizationMap.sec /-
 /-- Given a localization map `f : M →* N`, a section function sending `z : N` to some
 `(x, y) : M × S` such that `f x * (f y)⁻¹ = z`. -/
 @[to_additive
@@ -594,20 +663,26 @@ noncomputable def sec (f : LocalizationMap S N) (z : N) : M × S :=
   Classical.choose <| f.surj z
 #align submonoid.localization_map.sec Submonoid.LocalizationMap.sec
 #align add_submonoid.localization_map.sec AddSubmonoid.LocalizationMap.sec
+-/
 
+#print Submonoid.LocalizationMap.sec_spec /-
 @[to_additive]
 theorem sec_spec {f : LocalizationMap S N} (z : N) :
     z * f.toMap (f.sec z).2 = f.toMap (f.sec z).1 :=
   Classical.choose_spec <| f.surj z
 #align submonoid.localization_map.sec_spec Submonoid.LocalizationMap.sec_spec
 #align add_submonoid.localization_map.sec_spec AddSubmonoid.LocalizationMap.sec_spec
+-/
 
+#print Submonoid.LocalizationMap.sec_spec' /-
 @[to_additive]
 theorem sec_spec' {f : LocalizationMap S N} (z : N) :
     f.toMap (f.sec z).1 = f.toMap (f.sec z).2 * z := by rw [mul_comm, sec_spec]
 #align submonoid.localization_map.sec_spec' Submonoid.LocalizationMap.sec_spec'
 #align add_submonoid.localization_map.sec_spec' AddSubmonoid.LocalizationMap.sec_spec'
+-/
 
+#print Submonoid.LocalizationMap.mul_inv_left /-
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `w * (f y)⁻¹ = z ↔ w = f y * z`. -/
 @[to_additive
@@ -618,7 +693,9 @@ theorem mul_inv_left {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
     exact (IsUnit.coe_liftRight (f.restrict S) h _).symm
 #align submonoid.localization_map.mul_inv_left Submonoid.LocalizationMap.mul_inv_left
 #align add_submonoid.localization_map.add_neg_left AddSubmonoid.LocalizationMap.add_neg_left
+-/
 
+#print Submonoid.LocalizationMap.mul_inv_right /-
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `z = w * (f y)⁻¹ ↔ z * f y = w`. -/
 @[to_additive
@@ -628,7 +705,9 @@ theorem mul_inv_right {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
   rw [eq_comm, mul_inv_left h, mul_comm, eq_comm]
 #align submonoid.localization_map.mul_inv_right Submonoid.LocalizationMap.mul_inv_right
 #align add_submonoid.localization_map.add_neg_right AddSubmonoid.LocalizationMap.add_neg_right
+-/
 
+#print Submonoid.LocalizationMap.mul_inv /-
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that
 `f(S) ⊆ Nˣ`, for all `x₁ x₂ : M` and `y₁, y₂ ∈ S`, we have
 `f x₁ * (f y₁)⁻¹ = f x₂ * (f y₂)⁻¹ ↔ f (x₁ * y₂) = f (x₂ * y₁)`. -/
@@ -644,7 +723,9 @@ theorem mul_inv {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {x₁ x₂} {y₁ y
     f.map_mul, f.map_mul]
 #align submonoid.localization_map.mul_inv Submonoid.LocalizationMap.mul_inv
 #align add_submonoid.localization_map.add_neg AddSubmonoid.LocalizationMap.add_neg
+-/
 
+#print Submonoid.LocalizationMap.inv_inj /-
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y, z ∈ S`, we have `(f y)⁻¹ = (f z)⁻¹ → f y = f z`. -/
 @[to_additive
@@ -656,7 +737,9 @@ theorem inv_inj {f : M →* N} (hf : ∀ y : S, IsUnit (f y)) {y z}
     exact (IsUnit.coe_liftRight (f.restrict S) hf _).symm
 #align submonoid.localization_map.inv_inj Submonoid.LocalizationMap.inv_inj
 #align add_submonoid.localization_map.neg_inj AddSubmonoid.LocalizationMap.neg_inj
+-/
 
+#print Submonoid.LocalizationMap.inv_unique /-
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y ∈ S`, `(f y)⁻¹` is unique. -/
 @[to_additive
@@ -665,9 +748,11 @@ theorem inv_unique {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {y : S} {z} (H :
     ↑(IsUnit.liftRight (f.restrict S) h y)⁻¹ = z := by rw [← one_mul ↑_⁻¹, mul_inv_left, ← H]
 #align submonoid.localization_map.inv_unique Submonoid.LocalizationMap.inv_unique
 #align add_submonoid.localization_map.neg_unique AddSubmonoid.LocalizationMap.neg_unique
+-/
 
 variable (f : LocalizationMap S N)
 
+#print Submonoid.LocalizationMap.map_right_cancel /-
 @[to_additive]
 theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
     f.toMap x = f.toMap y :=
@@ -678,14 +763,18 @@ theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
   exact (Units.mul_right_inj u).1 h
 #align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancel
 #align add_submonoid.localization_map.map_right_cancel AddSubmonoid.LocalizationMap.map_right_cancel
+-/
 
+#print Submonoid.LocalizationMap.map_left_cancel /-
 @[to_additive]
 theorem map_left_cancel {x y} {c : S} (h : f.toMap (x * c) = f.toMap (y * c)) :
     f.toMap x = f.toMap y :=
   f.map_right_cancel <| by rw [mul_comm _ x, mul_comm _ y, h]
 #align submonoid.localization_map.map_left_cancel Submonoid.LocalizationMap.map_left_cancel
 #align add_submonoid.localization_map.map_left_cancel AddSubmonoid.LocalizationMap.map_left_cancel
+-/
 
+#print Submonoid.LocalizationMap.mk' /-
 /-- Given a localization map `f : M →* N`, the surjection sending `(x, y) : M × S` to
 `f x * (f y)⁻¹`. -/
 @[to_additive
@@ -694,7 +783,9 @@ noncomputable def mk' (f : LocalizationMap S N) (x : M) (y : S) : N :=
   f.toMap x * ↑(IsUnit.liftRight (f.toMap.restrict S) f.map_units y)⁻¹
 #align submonoid.localization_map.mk' Submonoid.LocalizationMap.mk'
 #align add_submonoid.localization_map.mk' AddSubmonoid.LocalizationMap.mk'
+-/
 
+#print Submonoid.LocalizationMap.mk'_mul /-
 @[to_additive]
 theorem mk'_mul (x₁ x₂ : M) (y₁ y₂ : S) : f.mk' (x₁ * x₂) (y₁ * y₂) = f.mk' x₁ y₁ * f.mk' x₂ y₂ :=
   (mul_inv_left f.map_units _ _ _).2 <|
@@ -705,12 +796,15 @@ theorem mk'_mul (x₁ x₂ : M) (y₁ y₂ : S) : f.mk' (x₁ * x₂) (y₁ * y
         ac_rfl
 #align submonoid.localization_map.mk'_mul Submonoid.LocalizationMap.mk'_mul
 #align add_submonoid.localization_map.mk'_add AddSubmonoid.LocalizationMap.mk'_add
+-/
 
+#print Submonoid.LocalizationMap.mk'_one /-
 @[to_additive]
 theorem mk'_one (x) : f.mk' x (1 : S) = f.toMap x := by
   rw [mk', MonoidHom.map_one] <;> exact mul_one _
 #align submonoid.localization_map.mk'_one Submonoid.LocalizationMap.mk'_one
 #align add_submonoid.localization_map.mk'_zero AddSubmonoid.LocalizationMap.mk'_zero
+-/
 
 #print Submonoid.LocalizationMap.mk'_sec /-
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, for all `z : N` we have that if
@@ -724,35 +818,46 @@ theorem mk'_sec (z : N) : f.mk' (f.sec z).1 (f.sec z).2 = z :=
 #align add_submonoid.localization_map.mk'_sec AddSubmonoid.LocalizationMap.mk'_sec
 -/
 
+#print Submonoid.LocalizationMap.mk'_surjective /-
 @[to_additive]
 theorem mk'_surjective (z : N) : ∃ (x : _) (y : S), f.mk' x y = z :=
   ⟨(f.sec z).1, (f.sec z).2, f.mk'_sec z⟩
 #align submonoid.localization_map.mk'_surjective Submonoid.LocalizationMap.mk'_surjective
 #align add_submonoid.localization_map.mk'_surjective AddSubmonoid.LocalizationMap.mk'_surjective
+-/
 
+#print Submonoid.LocalizationMap.mk'_spec /-
 @[to_additive]
 theorem mk'_spec (x) (y : S) : f.mk' x y * f.toMap y = f.toMap x :=
   show _ * _ * _ = _ by rw [mul_assoc, mul_comm _ (f.to_map y), ← mul_assoc, mul_inv_left, mul_comm]
 #align submonoid.localization_map.mk'_spec Submonoid.LocalizationMap.mk'_spec
 #align add_submonoid.localization_map.mk'_spec AddSubmonoid.LocalizationMap.mk'_spec
+-/
 
+#print Submonoid.LocalizationMap.mk'_spec' /-
 @[to_additive]
 theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_comm, mk'_spec]
 #align submonoid.localization_map.mk'_spec' Submonoid.LocalizationMap.mk'_spec'
 #align add_submonoid.localization_map.mk'_spec' AddSubmonoid.LocalizationMap.mk'_spec'
+-/
 
+#print Submonoid.LocalizationMap.eq_mk'_iff_mul_eq /-
 @[to_additive]
 theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.toMap x :=
   ⟨fun H => by rw [H, mk'_spec], fun H => by erw [mul_inv_right, H] <;> rfl⟩
 #align submonoid.localization_map.eq_mk'_iff_mul_eq Submonoid.LocalizationMap.eq_mk'_iff_mul_eq
 #align add_submonoid.localization_map.eq_mk'_iff_add_eq AddSubmonoid.LocalizationMap.eq_mk'_iff_add_eq
+-/
 
+#print Submonoid.LocalizationMap.mk'_eq_iff_eq_mul /-
 @[to_additive]
 theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.toMap y := by
   rw [eq_comm, eq_mk'_iff_mul_eq, eq_comm]
 #align submonoid.localization_map.mk'_eq_iff_eq_mul Submonoid.LocalizationMap.mk'_eq_iff_eq_mul
 #align add_submonoid.localization_map.mk'_eq_iff_eq_add AddSubmonoid.LocalizationMap.mk'_eq_iff_eq_add
+-/
 
+#print Submonoid.LocalizationMap.mk'_eq_iff_eq /-
 @[to_additive]
 theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
     f.mk' x₁ y₁ = f.mk' x₂ y₂ ↔ f.toMap (y₂ * x₁) = f.toMap (y₁ * x₂) :=
@@ -765,41 +870,53 @@ theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
       mul_inv_right f.map_units]⟩
 #align submonoid.localization_map.mk'_eq_iff_eq Submonoid.LocalizationMap.mk'_eq_iff_eq
 #align add_submonoid.localization_map.mk'_eq_iff_eq AddSubmonoid.LocalizationMap.mk'_eq_iff_eq
+-/
 
+#print Submonoid.LocalizationMap.mk'_eq_iff_eq' /-
 @[to_additive]
 theorem mk'_eq_iff_eq' {x₁ x₂} {y₁ y₂ : S} :
     f.mk' x₁ y₁ = f.mk' x₂ y₂ ↔ f.toMap (x₁ * y₂) = f.toMap (x₂ * y₁) := by
   simp only [f.mk'_eq_iff_eq, mul_comm]
 #align submonoid.localization_map.mk'_eq_iff_eq' Submonoid.LocalizationMap.mk'_eq_iff_eq'
 #align add_submonoid.localization_map.mk'_eq_iff_eq' AddSubmonoid.LocalizationMap.mk'_eq_iff_eq'
+-/
 
+#print Submonoid.LocalizationMap.eq /-
 @[to_additive]
 protected theorem eq {a₁ b₁} {a₂ b₂ : S} :
     f.mk' a₁ a₂ = f.mk' b₁ b₂ ↔ ∃ c : S, ↑c * (↑b₂ * a₁) = c * (a₂ * b₁) :=
   f.mk'_eq_iff_eq.trans <| f.eq_iff_exists
 #align submonoid.localization_map.eq Submonoid.LocalizationMap.eq
 #align add_submonoid.localization_map.eq AddSubmonoid.LocalizationMap.eq
+-/
 
+#print Submonoid.LocalizationMap.eq' /-
 @[to_additive]
 protected theorem eq' {a₁ b₁} {a₂ b₂ : S} :
     f.mk' a₁ a₂ = f.mk' b₁ b₂ ↔ Localization.r S (a₁, a₂) (b₁, b₂) := by
   rw [f.eq, Localization.r_iff_exists]
 #align submonoid.localization_map.eq' Submonoid.LocalizationMap.eq'
 #align add_submonoid.localization_map.eq' AddSubmonoid.LocalizationMap.eq'
+-/
 
+#print Submonoid.LocalizationMap.eq_iff_eq /-
 @[to_additive]
 theorem eq_iff_eq (g : LocalizationMap S P) {x y} : f.toMap x = f.toMap y ↔ g.toMap x = g.toMap y :=
   f.eq_iff_exists.trans g.eq_iff_exists.symm
 #align submonoid.localization_map.eq_iff_eq Submonoid.LocalizationMap.eq_iff_eq
 #align add_submonoid.localization_map.eq_iff_eq AddSubmonoid.LocalizationMap.eq_iff_eq
+-/
 
+#print Submonoid.LocalizationMap.mk'_eq_iff_mk'_eq /-
 @[to_additive]
 theorem mk'_eq_iff_mk'_eq (g : LocalizationMap S P) {x₁ x₂} {y₁ y₂ : S} :
     f.mk' x₁ y₁ = f.mk' x₂ y₂ ↔ g.mk' x₁ y₁ = g.mk' x₂ y₂ :=
   f.eq''.trans g.eq''.symm
 #align submonoid.localization_map.mk'_eq_iff_mk'_eq Submonoid.LocalizationMap.mk'_eq_iff_mk'_eq
 #align add_submonoid.localization_map.mk'_eq_iff_mk'_eq AddSubmonoid.LocalizationMap.mk'_eq_iff_mk'_eq
+-/
 
+#print Submonoid.LocalizationMap.exists_of_sec_mk' /-
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, for all `x₁ : M` and `y₁ ∈ S`,
 if `x₂ : M, y₂ ∈ S` are such that `f x₁ * (f y₁)⁻¹ * f y₂ = f x₂`, then there exists `c ∈ S`
 such that `x₁ * y₂ * c = x₂ * y₁ * c`. -/
@@ -810,71 +927,93 @@ theorem exists_of_sec_mk' (x) (y : S) :
   f.eq_iff_exists.1 <| f.mk'_eq_iff_eq.1 <| (mk'_sec _ _).symm
 #align submonoid.localization_map.exists_of_sec_mk' Submonoid.LocalizationMap.exists_of_sec_mk'
 #align add_submonoid.localization_map.exists_of_sec_mk' AddSubmonoid.LocalizationMap.exists_of_sec_mk'
+-/
 
+#print Submonoid.LocalizationMap.mk'_eq_of_eq /-
 @[to_additive]
 theorem mk'_eq_of_eq {a₁ b₁ : M} {a₂ b₂ : S} (H : ↑a₂ * b₁ = ↑b₂ * a₁) :
     f.mk' a₁ a₂ = f.mk' b₁ b₂ :=
   f.mk'_eq_iff_eq.2 <| H ▸ rfl
 #align submonoid.localization_map.mk'_eq_of_eq Submonoid.LocalizationMap.mk'_eq_of_eq
 #align add_submonoid.localization_map.mk'_eq_of_eq AddSubmonoid.LocalizationMap.mk'_eq_of_eq
+-/
 
+#print Submonoid.LocalizationMap.mk'_eq_of_eq' /-
 @[to_additive]
 theorem mk'_eq_of_eq' {a₁ b₁ : M} {a₂ b₂ : S} (H : b₁ * ↑a₂ = a₁ * ↑b₂) :
     f.mk' a₁ a₂ = f.mk' b₁ b₂ :=
   f.mk'_eq_of_eq <| by simpa only [mul_comm] using H
 #align submonoid.localization_map.mk'_eq_of_eq' Submonoid.LocalizationMap.mk'_eq_of_eq'
 #align add_submonoid.localization_map.mk'_eq_of_eq' AddSubmonoid.LocalizationMap.mk'_eq_of_eq'
+-/
 
+#print Submonoid.LocalizationMap.mk'_self' /-
 @[simp, to_additive]
 theorem mk'_self' (y : S) : f.mk' (y : M) y = 1 :=
   show _ * _ = _ by rw [mul_inv_left, mul_one]
 #align submonoid.localization_map.mk'_self' Submonoid.LocalizationMap.mk'_self'
 #align add_submonoid.localization_map.mk'_self' AddSubmonoid.LocalizationMap.mk'_self'
+-/
 
+#print Submonoid.LocalizationMap.mk'_self /-
 @[simp, to_additive]
 theorem mk'_self (x) (H : x ∈ S) : f.mk' x ⟨x, H⟩ = 1 := by convert mk'_self' _ _ <;> rfl
 #align submonoid.localization_map.mk'_self Submonoid.LocalizationMap.mk'_self
 #align add_submonoid.localization_map.mk'_self AddSubmonoid.LocalizationMap.mk'_self
+-/
 
+#print Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mul /-
 @[to_additive]
 theorem mul_mk'_eq_mk'_of_mul (x₁ x₂) (y : S) : f.toMap x₁ * f.mk' x₂ y = f.mk' (x₁ * x₂) y := by
   rw [← mk'_one, ← mk'_mul, one_mul]
 #align submonoid.localization_map.mul_mk'_eq_mk'_of_mul Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mul
 #align add_submonoid.localization_map.add_mk'_eq_mk'_of_add AddSubmonoid.LocalizationMap.add_mk'_eq_mk'_of_add
+-/
 
+#print Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mul /-
 @[to_additive]
 theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁ = f.mk' (x₁ * x₂) y := by
   rw [mul_comm, mul_mk'_eq_mk'_of_mul]
 #align submonoid.localization_map.mk'_mul_eq_mk'_of_mul Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mul
 #align add_submonoid.localization_map.mk'_add_eq_mk'_of_add AddSubmonoid.LocalizationMap.mk'_add_eq_mk'_of_add
+-/
 
+#print Submonoid.LocalizationMap.mul_mk'_one_eq_mk' /-
 @[to_additive]
 theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
   rw [mul_mk'_eq_mk'_of_mul, mul_one]
 #align submonoid.localization_map.mul_mk'_one_eq_mk' Submonoid.LocalizationMap.mul_mk'_one_eq_mk'
 #align add_submonoid.localization_map.add_mk'_zero_eq_mk' AddSubmonoid.LocalizationMap.add_mk'_zero_eq_mk'
+-/
 
+#print Submonoid.LocalizationMap.mk'_mul_cancel_right /-
 @[simp, to_additive]
 theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
   rw [← mul_mk'_one_eq_mk', f.to_map.map_mul, mul_assoc, mul_mk'_one_eq_mk', mk'_self', mul_one]
 #align submonoid.localization_map.mk'_mul_cancel_right Submonoid.LocalizationMap.mk'_mul_cancel_right
 #align add_submonoid.localization_map.mk'_add_cancel_right AddSubmonoid.LocalizationMap.mk'_add_cancel_right
+-/
 
+#print Submonoid.LocalizationMap.mk'_mul_cancel_left /-
 @[to_additive]
 theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := by
   rw [mul_comm, mk'_mul_cancel_right]
 #align submonoid.localization_map.mk'_mul_cancel_left Submonoid.LocalizationMap.mk'_mul_cancel_left
 #align add_submonoid.localization_map.mk'_add_cancel_left AddSubmonoid.LocalizationMap.mk'_add_cancel_left
+-/
 
+#print Submonoid.LocalizationMap.isUnit_comp /-
 @[to_additive]
 theorem isUnit_comp (j : N →* P) (y : S) : IsUnit (j.comp f.toMap y) :=
   ⟨Units.map j <| IsUnit.liftRight (f.toMap.restrict S) f.map_units y,
     show j _ = j _ from congr_arg j <| IsUnit.coe_liftRight (f.toMap.restrict S) f.map_units _⟩
 #align submonoid.localization_map.is_unit_comp Submonoid.LocalizationMap.isUnit_comp
 #align add_submonoid.localization_map.is_add_unit_comp AddSubmonoid.LocalizationMap.isAddUnit_comp
+-/
 
 variable {g : M →* P}
 
+#print Submonoid.LocalizationMap.eq_of_eq /-
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g(S) ⊆ units P`, `f x = f y → g x = g y` for all `x y : M`. -/
 @[to_additive
@@ -887,7 +1026,9 @@ theorem eq_of_eq (hg : ∀ y : S, IsUnit (g y)) {x y} (h : f.toMap x = f.toMap y
   rw [mul_assoc, ← g.map_mul, hc, mul_comm, mul_inv_left hg, g.map_mul]
 #align submonoid.localization_map.eq_of_eq Submonoid.LocalizationMap.eq_of_eq
 #align add_submonoid.localization_map.eq_of_eq AddSubmonoid.LocalizationMap.eq_of_eq
+-/
 
+#print Submonoid.LocalizationMap.comp_eq_of_eq /-
 /-- Given `comm_monoid`s `M, P`, localization maps `f : M →* N, k : P →* Q` for submonoids
 `S, T` respectively, and `g : M →* P` such that `g(S) ⊆ T`, `f x = f y` implies
 `k (g x) = k (g y)`. -/
@@ -898,9 +1039,11 @@ theorem comp_eq_of_eq {T : Submonoid P} {Q : Type _} [CommMonoid Q] (hg : ∀ y
   f.eq_of_eq (fun y : S => show IsUnit (k.toMap.comp g y) from k.map_units ⟨g y, hg y⟩) h
 #align submonoid.localization_map.comp_eq_of_eq Submonoid.LocalizationMap.comp_eq_of_eq
 #align add_submonoid.localization_map.comp_eq_of_eq AddSubmonoid.LocalizationMap.comp_eq_of_eq
+-/
 
 variable (hg : ∀ y : S, IsUnit (g y))
 
+#print Submonoid.LocalizationMap.lift /-
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
 `N` to `P` sending `z : N` to `g x * (g y)⁻¹`, where `(x, y) : M × S` are such that
@@ -926,9 +1069,11 @@ noncomputable def lift : N →* P
             ac_rfl)
 #align submonoid.localization_map.lift Submonoid.LocalizationMap.lift
 #align add_submonoid.localization_map.lift AddSubmonoid.LocalizationMap.lift
+-/
 
 variable {S g}
 
+#print Submonoid.LocalizationMap.lift_mk' /-
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
 `N` to `P` maps `f x * (f y)⁻¹` to `g x * (g y)⁻¹` for all `x : M, y ∈ S`. -/
@@ -940,7 +1085,9 @@ theorem lift_mk' (x y) : f.lift hg (f.mk' x y) = g x * ↑(IsUnit.liftRight (g.r
       rw [f.to_map.map_mul, f.to_map.map_mul, sec_spec', mul_assoc, f.mk'_spec, mul_comm]
 #align submonoid.localization_map.lift_mk' Submonoid.LocalizationMap.lift_mk'
 #align add_submonoid.localization_map.lift_mk' AddSubmonoid.LocalizationMap.lift_mk'
+-/
 
+#print Submonoid.LocalizationMap.lift_spec /-
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v : P`, we have
 `f.lift hg z = v ↔ g x = g y * v`, where `x : M, y ∈ S` are such that `z * f y = f x`. -/
@@ -950,7 +1097,9 @@ theorem lift_spec (z v) : f.lift hg z = v ↔ g (f.sec z).1 = g (f.sec z).2 * v
   mul_inv_left hg _ _ v
 #align submonoid.localization_map.lift_spec Submonoid.LocalizationMap.lift_spec
 #align add_submonoid.localization_map.lift_spec AddSubmonoid.LocalizationMap.lift_spec
+-/
 
+#print Submonoid.LocalizationMap.lift_spec_mul /-
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v w : P`, we have
 `f.lift hg z * w = v ↔ g x * w = g y * v`, where `x : M, y ∈ S` are such that
@@ -964,13 +1113,17 @@ theorem lift_spec_mul (z w v) : f.lift hg z * w = v ↔ g (f.sec z).1 * w = g (f
   rw [← mul_assoc, mul_inv_left hg, mul_comm]
 #align submonoid.localization_map.lift_spec_mul Submonoid.LocalizationMap.lift_spec_mul
 #align add_submonoid.localization_map.lift_spec_add AddSubmonoid.LocalizationMap.lift_spec_add
+-/
 
+#print Submonoid.LocalizationMap.lift_mk'_spec /-
 @[to_additive]
 theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y * v := by
   rw [f.lift_mk' hg] <;> exact mul_inv_left hg _ _ _
 #align submonoid.localization_map.lift_mk'_spec Submonoid.LocalizationMap.lift_mk'_spec
 #align add_submonoid.localization_map.lift_mk'_spec AddSubmonoid.LocalizationMap.lift_mk'_spec
+-/
 
+#print Submonoid.LocalizationMap.lift_mul_right /-
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
 `f.lift hg z * g y = g x`, where `x : M, y ∈ S` are such that `z * f y = f x`. -/
@@ -980,7 +1133,9 @@ theorem lift_mul_right (z) : f.lift hg z * g (f.sec z).2 = g (f.sec z).1 :=
   show _ * _ * _ = _ by erw [mul_assoc, IsUnit.liftRight_inv_mul, mul_one]
 #align submonoid.localization_map.lift_mul_right Submonoid.LocalizationMap.lift_mul_right
 #align add_submonoid.localization_map.lift_add_right AddSubmonoid.LocalizationMap.lift_add_right
+-/
 
+#print Submonoid.LocalizationMap.lift_mul_left /-
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
 `g y * f.lift hg z = g x`, where `x : M, y ∈ S` are such that `z * f y = f x`. -/
@@ -990,25 +1145,33 @@ theorem lift_mul_left (z) : g (f.sec z).2 * f.lift hg z = g (f.sec z).1 := by
   rw [mul_comm, lift_mul_right]
 #align submonoid.localization_map.lift_mul_left Submonoid.LocalizationMap.lift_mul_left
 #align add_submonoid.localization_map.lift_add_left AddSubmonoid.LocalizationMap.lift_add_left
+-/
 
+#print Submonoid.LocalizationMap.lift_eq /-
 @[simp, to_additive]
 theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
   rw [lift_spec, ← g.map_mul] <;> exact f.eq_of_eq hg (by rw [sec_spec', f.to_map.map_mul])
 #align submonoid.localization_map.lift_eq Submonoid.LocalizationMap.lift_eq
 #align add_submonoid.localization_map.lift_eq AddSubmonoid.LocalizationMap.lift_eq
+-/
 
+#print Submonoid.LocalizationMap.lift_eq_iff /-
 @[to_additive]
 theorem lift_eq_iff {x y : M × S} :
     f.lift hg (f.mk' x.1 x.2) = f.lift hg (f.mk' y.1 y.2) ↔ g (x.1 * y.2) = g (y.1 * x.2) := by
   rw [lift_mk', lift_mk', mul_inv hg]
 #align submonoid.localization_map.lift_eq_iff Submonoid.LocalizationMap.lift_eq_iff
 #align add_submonoid.localization_map.lift_eq_iff AddSubmonoid.LocalizationMap.lift_eq_iff
+-/
 
+#print Submonoid.LocalizationMap.lift_comp /-
 @[simp, to_additive]
 theorem lift_comp : (f.lift hg).comp f.toMap = g := by ext <;> exact f.lift_eq hg _
 #align submonoid.localization_map.lift_comp Submonoid.LocalizationMap.lift_comp
 #align add_submonoid.localization_map.lift_comp AddSubmonoid.LocalizationMap.lift_comp
+-/
 
+#print Submonoid.LocalizationMap.lift_of_comp /-
 @[simp, to_additive]
 theorem lift_of_comp (j : N →* P) : f.lift (f.isUnit_comp j) = j :=
   by
@@ -1018,7 +1181,9 @@ theorem lift_of_comp (j : N →* P) : f.lift (f.isUnit_comp j) = j :=
   erw [← j.map_mul, sec_spec']
 #align submonoid.localization_map.lift_of_comp Submonoid.LocalizationMap.lift_of_comp
 #align add_submonoid.localization_map.lift_of_comp AddSubmonoid.LocalizationMap.lift_of_comp
+-/
 
+#print Submonoid.LocalizationMap.epic_of_localizationMap /-
 @[to_additive]
 theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a = k.comp f.toMap a) :
     j = k := by
@@ -1026,7 +1191,9 @@ theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a =
   congr 1 with x; exact h x
 #align submonoid.localization_map.epic_of_localization_map Submonoid.LocalizationMap.epic_of_localizationMap
 #align add_submonoid.localization_map.epic_of_localization_map AddSubmonoid.LocalizationMap.epic_of_localizationMap
+-/
 
+#print Submonoid.LocalizationMap.lift_unique /-
 @[to_additive]
 theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg = j :=
   by
@@ -1036,13 +1203,17 @@ theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg
   rw [← sec_spec']
 #align submonoid.localization_map.lift_unique Submonoid.LocalizationMap.lift_unique
 #align add_submonoid.localization_map.lift_unique AddSubmonoid.LocalizationMap.lift_unique
+-/
 
+#print Submonoid.LocalizationMap.lift_id /-
 @[simp, to_additive]
 theorem lift_id (x) : f.lift f.map_units x = x :=
   MonoidHom.ext_iff.1 (f.lift_of_comp <| MonoidHom.id N) x
 #align submonoid.localization_map.lift_id Submonoid.LocalizationMap.lift_id
 #align add_submonoid.localization_map.lift_id AddSubmonoid.LocalizationMap.lift_id
+-/
 
+#print Submonoid.LocalizationMap.lift_left_inverse /-
 /-- Given two localization maps `f : M →* N, k : M →* P` for a submonoid `S ⊆ M`,
 the hom from `P` to `N` induced by `f` is left inverse to the hom from `N` to `P`
 induced by `k`. -/
@@ -1068,7 +1239,9 @@ theorem lift_left_inverse {k : LocalizationMap S P} (z : N) :
   ac_rfl
 #align submonoid.localization_map.lift_left_inverse Submonoid.LocalizationMap.lift_left_inverse
 #align add_submonoid.localization_map.lift_left_inverse AddSubmonoid.LocalizationMap.lift_left_inverse
+-/
 
+#print Submonoid.LocalizationMap.lift_surjective_iff /-
 @[to_additive]
 theorem lift_surjective_iff :
     Function.Surjective (f.lift hg) ↔ ∀ v : P, ∃ x : M × S, v * g x.2 = g x.1 :=
@@ -1086,7 +1259,9 @@ theorem lift_surjective_iff :
     rw [lift_mk', mul_inv_left hg, mul_comm, ← hx]
 #align submonoid.localization_map.lift_surjective_iff Submonoid.LocalizationMap.lift_surjective_iff
 #align add_submonoid.localization_map.lift_surjective_iff AddSubmonoid.LocalizationMap.lift_surjective_iff
+-/
 
+#print Submonoid.LocalizationMap.lift_injective_iff /-
 @[to_additive]
 theorem lift_injective_iff :
     Function.Injective (f.lift hg) ↔ ∀ x y, f.toMap x = f.toMap y ↔ g x = g y :=
@@ -1105,10 +1280,12 @@ theorem lift_injective_iff :
     exact (mul_inv f.map_units).2 ((H _ _).2 <| (mul_inv hg).1 h)
 #align submonoid.localization_map.lift_injective_iff Submonoid.LocalizationMap.lift_injective_iff
 #align add_submonoid.localization_map.lift_injective_iff AddSubmonoid.LocalizationMap.lift_injective_iff
+-/
 
 variable {T : Submonoid P} (hy : ∀ y : S, g y ∈ T) {Q : Type _} [CommMonoid Q]
   (k : LocalizationMap T Q)
 
+#print Submonoid.LocalizationMap.map /-
 /-- Given a `comm_monoid` homomorphism `g : M →* P` where for submonoids `S ⊆ M, T ⊆ P` we have
 `g(S) ⊆ T`, the induced monoid homomorphism from the localization of `M` at `S` to the
 localization of `P` at `T`: if `f : M →* N` and `k : P →* Q` are localization maps for `S` and
@@ -1120,21 +1297,27 @@ noncomputable def map : N →* Q :=
   @lift _ _ _ _ _ _ _ f (k.toMap.comp g) fun y => k.map_units ⟨g y, hy y⟩
 #align submonoid.localization_map.map Submonoid.LocalizationMap.map
 #align add_submonoid.localization_map.map AddSubmonoid.LocalizationMap.map
+-/
 
 variable {k}
 
+#print Submonoid.LocalizationMap.map_eq /-
 @[to_additive]
 theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
   f.liftEq (fun y => k.map_units ⟨g y, hy y⟩) x
 #align submonoid.localization_map.map_eq Submonoid.LocalizationMap.map_eq
 #align add_submonoid.localization_map.map_eq AddSubmonoid.LocalizationMap.map_eq
+-/
 
+#print Submonoid.LocalizationMap.map_comp /-
 @[simp, to_additive]
 theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
   f.lift_comp fun y => k.map_units ⟨g y, hy y⟩
 #align submonoid.localization_map.map_comp Submonoid.LocalizationMap.map_comp
 #align add_submonoid.localization_map.map_comp AddSubmonoid.LocalizationMap.map_comp
+-/
 
+#print Submonoid.LocalizationMap.map_mk' /-
 @[to_additive]
 theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y⟩ :=
   by
@@ -1144,7 +1327,9 @@ theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y
     exact (k.mk'_mul_cancel_left (g x) ⟨g y, hy y⟩).symm
 #align submonoid.localization_map.map_mk' Submonoid.LocalizationMap.map_mk'
 #align add_submonoid.localization_map.map_mk' AddSubmonoid.LocalizationMap.map_mk'
+-/
 
+#print Submonoid.LocalizationMap.map_spec /-
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
 `u : Q`, we have `f.map hy k z = u ↔ k (g x) = k (g y) * u` where `x : M, y ∈ S` are such that
@@ -1155,7 +1340,9 @@ theorem map_spec (z u) : f.map hy k z = u ↔ k.toMap (g (f.sec z).1) = k.toMap
   f.lift_spec (fun y => k.map_units ⟨g y, hy y⟩) _ _
 #align submonoid.localization_map.map_spec Submonoid.LocalizationMap.map_spec
 #align add_submonoid.localization_map.map_spec AddSubmonoid.LocalizationMap.map_spec
+-/
 
+#print Submonoid.LocalizationMap.map_mul_right /-
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
 we have `f.map hy k z * k (g y) = k (g x)` where `x : M, y ∈ S` are such that
@@ -1166,7 +1353,9 @@ theorem map_mul_right (z) : f.map hy k z * k.toMap (g (f.sec z).2) = k.toMap (g
   f.lift_mul_right (fun y => k.map_units ⟨g y, hy y⟩) _
 #align submonoid.localization_map.map_mul_right Submonoid.LocalizationMap.map_mul_right
 #align add_submonoid.localization_map.map_add_right AddSubmonoid.LocalizationMap.map_add_right
+-/
 
+#print Submonoid.LocalizationMap.map_mul_left /-
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
 we have `k (g y) * f.map hy k z = k (g x)` where `x : M, y ∈ S` are such that
@@ -1177,13 +1366,17 @@ theorem map_mul_left (z) : k.toMap (g (f.sec z).2) * f.map hy k z = k.toMap (g (
   rw [mul_comm, f.map_mul_right]
 #align submonoid.localization_map.map_mul_left Submonoid.LocalizationMap.map_mul_left
 #align add_submonoid.localization_map.map_add_left AddSubmonoid.LocalizationMap.map_add_left
+-/
 
+#print Submonoid.LocalizationMap.map_id /-
 @[simp, to_additive]
 theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f z = z :=
   f.lift_id z
 #align submonoid.localization_map.map_id Submonoid.LocalizationMap.map_id
 #align add_submonoid.localization_map.map_id AddSubmonoid.LocalizationMap.map_id
+-/
 
+#print Submonoid.LocalizationMap.map_comp_map /-
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
 @[to_additive
@@ -1202,7 +1395,9 @@ theorem map_comp_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMono
         (by rw [k.to_map.map_mul, k.to_map.map_mul, sec_spec', mul_assoc, map_mul_right])
 #align submonoid.localization_map.map_comp_map Submonoid.LocalizationMap.map_comp_map
 #align add_submonoid.localization_map.map_comp_map AddSubmonoid.LocalizationMap.map_comp_map
+-/
 
+#print Submonoid.LocalizationMap.map_map /-
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
 @[to_additive
@@ -1213,6 +1408,7 @@ theorem map_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMonoid R]
   rw [← f.map_comp_map hy j hl] <;> rfl
 #align submonoid.localization_map.map_map Submonoid.LocalizationMap.map_map
 #align add_submonoid.localization_map.map_map AddSubmonoid.LocalizationMap.map_map
+-/
 
 section AwayMap
 
@@ -1239,6 +1435,7 @@ noncomputable def AwayMap.invSelf : N :=
 #align submonoid.localization_map.away_map.inv_self Submonoid.LocalizationMap.AwayMap.invSelf
 -/
 
+#print Submonoid.LocalizationMap.AwayMap.lift /-
 /-- Given `x : M`, a localization map `F : M →* N` away from `x`, and a map of `comm_monoid`s
 `g : M →* P` such that `g x` is invertible, the homomorphism induced from `N` to `P` sending
 `z : N` to `g y * (g x)⁻ⁿ`, where `y : M, n : ℕ` are such that `z = F y * (F x)⁻ⁿ`. -/
@@ -1249,17 +1446,23 @@ noncomputable def AwayMap.lift (hg : IsUnit (g x)) : N →* P :=
       rw [← hn, g.map_pow]
       exact IsUnit.pow n hg
 #align submonoid.localization_map.away_map.lift Submonoid.LocalizationMap.AwayMap.lift
+-/
 
+#print Submonoid.LocalizationMap.AwayMap.lift_eq /-
 @[simp]
 theorem AwayMap.lift_eq (hg : IsUnit (g x)) (a : M) : F.lift x hg (F.toMap a) = g a :=
   lift_eq _ _ _
 #align submonoid.localization_map.away_map.lift_eq Submonoid.LocalizationMap.AwayMap.lift_eq
+-/
 
+#print Submonoid.LocalizationMap.AwayMap.lift_comp /-
 @[simp]
 theorem AwayMap.lift_comp (hg : IsUnit (g x)) : (F.lift x hg).comp F.toMap = g :=
   lift_comp _ _
 #align submonoid.localization_map.away_map.lift_comp Submonoid.LocalizationMap.AwayMap.lift_comp
+-/
 
+#print Submonoid.LocalizationMap.awayToAwayRight /-
 /-- Given `x y : M` and localization maps `F : M →* N, G : M →* P` away from `x` and `x * y`
 respectively, the homomorphism induced from `N` to `P`. -/
 noncomputable def awayToAwayRight (y : M) (G : AwayMap (x * y) P) : N →* P :=
@@ -1268,6 +1471,7 @@ noncomputable def awayToAwayRight (y : M) (G : AwayMap (x * y) P) : N →* P :=
       isUnit_of_mul_eq_one (G.toMap x) (G.mk' y ⟨x * y, mem_powers _⟩) <| by
         rw [mul_mk'_eq_mk'_of_mul, mk'_self]
 #align submonoid.localization_map.away_to_away_right Submonoid.LocalizationMap.awayToAwayRight
+-/
 
 end AwayMap
 
@@ -1291,6 +1495,7 @@ noncomputable def AwayMap.negSelf : B :=
 #align add_submonoid.localization_map.away_map.neg_self AddSubmonoid.LocalizationMap.AwayMap.negSelf
 -/
 
+#print AddSubmonoid.LocalizationMap.AwayMap.lift /-
 /-- Given `x : A`, a localization map `F : A →+ B` away from `x`, and a map of `add_comm_monoid`s
 `g : A →+ C` such that `g x` is invertible, the homomorphism induced from `B` to `C` sending
 `z : B` to `g y - n • g x`, where `y : A, n : ℕ` are such that `z = F y - n • F x`. -/
@@ -1303,17 +1508,23 @@ noncomputable def AwayMap.lift (hg : IsAddUnit (g x)) : B →+ C :=
       rw [g.map_nsmul]
       exact IsAddUnit.map (nsmulAddMonoidHom n : C →+ C) hg
 #align add_submonoid.localization_map.away_map.lift AddSubmonoid.LocalizationMap.AwayMap.lift
+-/
 
+#print AddSubmonoid.LocalizationMap.AwayMap.lift_eq /-
 @[simp]
 theorem AwayMap.lift_eq (hg : IsAddUnit (g x)) (a : A) : F.lift x hg (F.toMap a) = g a :=
   lift_eq _ _ _
 #align add_submonoid.localization_map.away_map.lift_eq AddSubmonoid.LocalizationMap.AwayMap.lift_eq
+-/
 
+#print AddSubmonoid.LocalizationMap.AwayMap.lift_comp /-
 @[simp]
 theorem AwayMap.lift_comp (hg : IsAddUnit (g x)) : (F.lift x hg).comp F.toMap = g :=
   lift_comp _ _
 #align add_submonoid.localization_map.away_map.lift_comp AddSubmonoid.LocalizationMap.AwayMap.lift_comp
+-/
 
+#print AddSubmonoid.LocalizationMap.awayToAwayRight /-
 /-- Given `x y : A` and localization maps `F : A →+ B, G : A →+ C` away from `x` and `x + y`
 respectively, the homomorphism induced from `B` to `C`. -/
 noncomputable def awayToAwayRight (y : A) (G : AwayMap (x + y) C) : B →+ C :=
@@ -1322,6 +1533,7 @@ noncomputable def awayToAwayRight (y : A) (G : AwayMap (x + y) C) : B →+ C :=
       isAddUnit_of_add_eq_zero (G.toMap x) (G.mk' y ⟨x + y, mem_multiples _⟩) <| by
         rw [add_mk'_eq_mk'_of_add, mk'_self]
 #align add_submonoid.localization_map.away_to_away_right AddSubmonoid.LocalizationMap.awayToAwayRight
+-/
 
 end AwayMap
 
@@ -1336,6 +1548,7 @@ namespace LocalizationMap
 variable (f : S.LocalizationMap N) {g : M →* P} (hg : ∀ y : S, IsUnit (g y)) {T : Submonoid P}
   {Q : Type _} [CommMonoid Q]
 
+#print Submonoid.LocalizationMap.mulEquivOfLocalizations /-
 /-- If `f : M →* N` and `k : M →* P` are localization maps for a submonoid `S`, we get an
 isomorphism of `N` and `P`. -/
 @[to_additive
@@ -1345,28 +1558,36 @@ noncomputable def mulEquivOfLocalizations (k : LocalizationMap S P) : N ≃* P :
     MonoidHom.map_mul _⟩
 #align submonoid.localization_map.mul_equiv_of_localizations Submonoid.LocalizationMap.mulEquivOfLocalizations
 #align add_submonoid.localization_map.add_equiv_of_localizations AddSubmonoid.LocalizationMap.addEquivOfLocalizations
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfLocalizations_apply /-
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
     f.mulEquivOfLocalizations k x = f.lift k.map_units x :=
   rfl
 #align submonoid.localization_map.mul_equiv_of_localizations_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_apply
 #align add_submonoid.localization_map.add_equiv_of_localizations_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_apply
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_apply /-
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_symm_apply {k : LocalizationMap S P} {x} :
     (f.mulEquivOfLocalizations k).symm x = k.lift f.map_units x :=
   rfl
 #align submonoid.localization_map.mul_equiv_of_localizations_symm_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_apply
 #align add_submonoid.localization_map.add_equiv_of_localizations_symm_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_symm_apply
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations /-
 @[to_additive]
 theorem mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations {k : LocalizationMap S P} :
     (k.mulEquivOfLocalizations f).symm = f.mulEquivOfLocalizations k :=
   rfl
 #align submonoid.localization_map.mul_equiv_of_localizations_symm_eq_mul_equiv_of_localizations Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations
 #align add_submonoid.localization_map.add_equiv_of_localizations_symm_eq_add_equiv_of_localizations AddSubmonoid.LocalizationMap.addEquivOfLocalizations_symm_eq_addEquivOfLocalizations
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfLocalizations /-
 /-- If `f : M →* N` is a localization map for a submonoid `S` and `k : N ≃* P` is an isomorphism
 of `comm_monoid`s, `k ∘ f` is a localization map for `M` at `S`. -/
 @[to_additive
@@ -1380,76 +1601,98 @@ def ofMulEquivOfLocalizations (k : N ≃* P) : LocalizationMap S P :=
     fun x y => k.apply_eq_iff_eq.trans f.eq_iff_exists
 #align submonoid.localization_map.of_mul_equiv_of_localizations Submonoid.LocalizationMap.ofMulEquivOfLocalizations
 #align add_submonoid.localization_map.of_add_equiv_of_localizations AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfLocalizations_apply /-
 @[simp, to_additive]
 theorem ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
     (f.ofMulEquivOfLocalizations k).toMap x = k (f.toMap x) :=
   rfl
 #align submonoid.localization_map.of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.ofMulEquivOfLocalizations_apply
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_apply AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_apply
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq /-
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq {k : N ≃* P} :
     (f.ofMulEquivOfLocalizations k).toMap = k.toMonoidHom.comp f.toMap :=
   rfl
 #align submonoid.localization_map.of_mul_equiv_of_localizations_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_eq AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_eq
+-/
 
+#print Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply /-
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
     k.symm ((f.ofMulEquivOfLocalizations k).toMap x) = f.toMap x :=
   k.symm_apply_apply (f.toMap x)
 #align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply
 #align add_submonoid.localization_map.symm_comp_of_add_equiv_of_localizations_apply AddSubmonoid.LocalizationMap.symm_comp_ofAddEquivOfLocalizations_apply
+-/
 
+#print Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply' /-
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
     k ((f.ofMulEquivOfLocalizations k.symm).toMap x) = f.toMap x :=
   k.apply_symm_apply (f.toMap x)
 #align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply'
 #align add_submonoid.localization_map.symm_comp_of_add_equiv_of_localizations_apply' AddSubmonoid.LocalizationMap.symm_comp_ofAddEquivOfLocalizations_apply'
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eq /-
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
     (f.ofMulEquivOfLocalizations k).toMap x = y ↔ f.toMap x = k.symm y :=
   k.toEquiv.eq_symm_apply.symm
 #align submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eq
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_eq_iff_eq AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_eq_iff_eq
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv /-
 @[to_additive add_equiv_of_localizations_right_inv]
 theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S P) :
     f.ofMulEquivOfLocalizations (f.mulEquivOfLocalizations k) = k :=
   toMap_injective <| f.lift_comp k.map_units
 #align submonoid.localization_map.mul_equiv_of_localizations_right_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv
 #align add_submonoid.localization_map.add_equiv_of_localizations_right_inv AddSubmonoid.LocalizationMap.addEquivOfLocalizations_right_inv
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_apply /-
 @[simp, to_additive add_equiv_of_localizations_right_inv_apply]
 theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
     (f.ofMulEquivOfLocalizations (f.mulEquivOfLocalizations k)).toMap x = k.toMap x :=
   ext_iff.1 (f.mulEquivOfLocalizations_right_inv k) x
 #align submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_apply
 #align add_submonoid.localization_map.add_equiv_of_localizations_right_inv_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_right_inv_apply
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv /-
 @[to_additive]
 theorem mulEquivOfLocalizations_left_inv (k : N ≃* P) :
     f.mulEquivOfLocalizations (f.ofMulEquivOfLocalizations k) = k :=
   MulEquiv.ext <| MonoidHom.ext_iff.1 <| f.lift_of_comp k.toMonoidHom
 #align submonoid.localization_map.mul_equiv_of_localizations_left_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv
 #align add_submonoid.localization_map.add_equiv_of_localizations_left_neg AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv_apply /-
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_left_inv_apply {k : N ≃* P} (x) :
     f.mulEquivOfLocalizations (f.ofMulEquivOfLocalizations k) x = k x := by
   rw [mul_equiv_of_localizations_left_inv]
 #align submonoid.localization_map.mul_equiv_of_localizations_left_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv_apply
 #align add_submonoid.localization_map.add_equiv_of_localizations_left_neg_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg_apply
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfLocalizations_id /-
 @[simp, to_additive]
 theorem ofMulEquivOfLocalizations_id : f.ofMulEquivOfLocalizations (MulEquiv.refl N) = f := by
   ext <;> rfl
 #align submonoid.localization_map.of_mul_equiv_of_localizations_id Submonoid.LocalizationMap.ofMulEquivOfLocalizations_id
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_id AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_id
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfLocalizations_comp /-
 @[to_additive]
 theorem ofMulEquivOfLocalizations_comp {k : N ≃* P} {j : P ≃* Q} :
     (f.ofMulEquivOfLocalizations (k.trans j)).toMap =
@@ -1457,7 +1700,9 @@ theorem ofMulEquivOfLocalizations_comp {k : N ≃* P} {j : P ≃* Q} :
   by ext <;> rfl
 #align submonoid.localization_map.of_mul_equiv_of_localizations_comp Submonoid.LocalizationMap.ofMulEquivOfLocalizations_comp
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_comp AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_comp
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfDom /-
 /-- Given `comm_monoid`s `M, P` and submonoids `S ⊆ M, T ⊆ P`, if `f : M →* N` is a localization
 map for `S` and `k : P ≃* M` is an isomorphism of `comm_monoid`s such that `k(T) = S`, `f ∘ k`
 is a localization map for `T`. -/
@@ -1489,35 +1734,45 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
               erw [← k.map_mul] <;> rw [hc, k.map_mul] <;> rfl⟩⟩
 #align submonoid.localization_map.of_mul_equiv_of_dom Submonoid.LocalizationMap.ofMulEquivOfDom
 #align add_submonoid.localization_map.of_add_equiv_of_dom AddSubmonoid.LocalizationMap.ofAddEquivOfDom
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfDom_apply /-
 @[simp, to_additive]
 theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
     (f.ofMulEquivOfDom H).toMap x = f.toMap (k x) :=
   rfl
 #align submonoid.localization_map.of_mul_equiv_of_dom_apply Submonoid.LocalizationMap.ofMulEquivOfDom_apply
 #align add_submonoid.localization_map.of_add_equiv_of_dom_apply AddSubmonoid.LocalizationMap.ofAddEquivOfDom_apply
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfDom_eq /-
 @[to_additive]
 theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.toMonoidHom = S) :
     (f.ofMulEquivOfDom H).toMap = f.toMap.comp k.toMonoidHom :=
   rfl
 #align submonoid.localization_map.of_mul_equiv_of_dom_eq Submonoid.LocalizationMap.ofMulEquivOfDom_eq
 #align add_submonoid.localization_map.of_add_equiv_of_dom_eq AddSubmonoid.LocalizationMap.ofAddEquivOfDom_eq
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symm /-
 @[to_additive]
 theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
     (f.ofMulEquivOfDom H).toMap (k.symm x) = f.toMap x :=
   congr_arg f.toMap <| k.apply_symm_apply x
 #align submonoid.localization_map.of_mul_equiv_of_dom_comp_symm Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symm
 #align add_submonoid.localization_map.of_add_equiv_of_dom_comp_symm AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp_symm
+-/
 
+#print Submonoid.LocalizationMap.ofMulEquivOfDom_comp /-
 @[to_additive]
 theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) (x) :
     (f.ofMulEquivOfDom H).toMap (k x) = f.toMap x :=
   congr_arg f.toMap <| k.symm_apply_apply x
 #align submonoid.localization_map.of_mul_equiv_of_dom_comp Submonoid.LocalizationMap.ofMulEquivOfDom_comp
 #align add_submonoid.localization_map.of_add_equiv_of_dom_comp AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp
+-/
 
+#print 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."]
 theorem ofMulEquivOfDom_id :
@@ -1528,7 +1783,9 @@ theorem ofMulEquivOfDom_id :
   by ext <;> rfl
 #align submonoid.localization_map.of_mul_equiv_of_dom_id Submonoid.LocalizationMap.ofMulEquivOfDom_id
 #align add_submonoid.localization_map.of_add_equiv_of_dom_id AddSubmonoid.LocalizationMap.ofAddEquivOfDom_id
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfMulEquiv /-
 /-- Given localization maps `f : M →* N, k : P →* U` for submonoids `S, T` respectively, an
 isomorphism `j : M ≃* P` such that `j(S) = T` induces an isomorphism of localizations
 `N ≃* U`. -/
@@ -1539,7 +1796,9 @@ noncomputable def mulEquivOfMulEquiv (k : LocalizationMap T Q) {j : M ≃* P}
   f.mulEquivOfLocalizations <| k.ofMulEquivOfDom H
 #align submonoid.localization_map.mul_equiv_of_mul_equiv Submonoid.LocalizationMap.mulEquivOfMulEquiv
 #align add_submonoid.localization_map.add_equiv_of_add_equiv AddSubmonoid.LocalizationMap.addEquivOfAddEquiv
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map_apply /-
 @[simp, to_additive]
 theorem mulEquivOfMulEquiv_eq_map_apply {k : LocalizationMap T Q} {j : M ≃* P}
     (H : S.map j.toMonoidHom = T) (x) :
@@ -1548,7 +1807,9 @@ theorem mulEquivOfMulEquiv_eq_map_apply {k : LocalizationMap T Q} {j : M ≃* P}
   rfl
 #align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map_apply Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map_apply
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map_apply AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map_apply
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map /-
 @[to_additive]
 theorem mulEquivOfMulEquiv_eq_map {k : LocalizationMap T Q} {j : M ≃* P}
     (H : S.map j.toMonoidHom = T) :
@@ -1557,14 +1818,18 @@ theorem mulEquivOfMulEquiv_eq_map {k : LocalizationMap T Q} {j : M ≃* P}
   rfl
 #align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq /-
 @[simp, to_additive]
 theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T)
     (x) : f.mulEquivOfMulEquiv k H (f.toMap x) = k.toMap (j x) :=
   f.map_eq (fun y : S => H ▸ Set.mem_image_of_mem j y.2) _
 #align submonoid.localization_map.mul_equiv_of_mul_equiv_eq Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_eq AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq
+-/
 
+#print Submonoid.LocalizationMap.mulEquivOfMulEquiv_mk' /-
 @[simp, to_additive]
 theorem mulEquivOfMulEquiv_mk' {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T)
     (x y) :
@@ -1572,7 +1837,9 @@ theorem mulEquivOfMulEquiv_mk' {k : LocalizationMap T Q} {j : M ≃* P} (H : S.m
   f.map_mk' (fun y : S => H ▸ Set.mem_image_of_mem j y.2) _ _
 #align submonoid.localization_map.mul_equiv_of_mul_equiv_mk' Submonoid.LocalizationMap.mulEquivOfMulEquiv_mk'
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_mk' AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_mk'
+-/
 
+#print Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_apply /-
 @[simp, to_additive]
 theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
     (H : S.map j.toMonoidHom = T) (x) :
@@ -1580,13 +1847,16 @@ theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
   ext_iff.1 (f.mulEquivOfLocalizations_right_inv (k.ofMulEquivOfDom H)) x
 #align submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_apply
 #align add_submonoid.localization_map.of_add_equiv_of_add_equiv_apply AddSubmonoid.LocalizationMap.of_addEquivOfAddEquiv_apply
+-/
 
+#print Submonoid.LocalizationMap.of_mulEquivOfMulEquiv /-
 @[to_additive]
 theorem of_mulEquivOfMulEquiv {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T) :
     (f.ofMulEquivOfLocalizations (f.mulEquivOfMulEquiv k H)).toMap = k.toMap.comp j.toMonoidHom :=
   MonoidHom.ext <| f.of_mulEquivOfMulEquiv_apply H
 #align submonoid.localization_map.of_mul_equiv_of_mul_equiv Submonoid.LocalizationMap.of_mulEquivOfMulEquiv
 #align add_submonoid.localization_map.of_add_equiv_of_add_equiv AddSubmonoid.LocalizationMap.of_addEquivOfAddEquiv
+-/
 
 end LocalizationMap
 
@@ -1622,12 +1892,15 @@ def monoidOf : Submonoid.LocalizationMap S (Localization S) :=
 
 variable {S}
 
+#print Localization.mk_one_eq_monoidOf_mk /-
 @[to_additive]
 theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x :=
   rfl
 #align localization.mk_one_eq_monoid_of_mk Localization.mk_one_eq_monoidOf_mk
 #align add_localization.mk_zero_eq_add_monoid_of_mk AddLocalization.mk_zero_eq_addMonoidOf_mk
+-/
 
+#print Localization.mk_eq_monoidOf_mk'_apply /-
 @[to_additive]
 theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
   show _ = _ * _ from
@@ -1639,30 +1912,38 @@ theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
       exact mk_eq_mk_iff.2 (Con.symm _ <| (Localization.r S).mul (Con.refl _ (x, 1)) <| one_rel _)
 #align localization.mk_eq_monoid_of_mk'_apply Localization.mk_eq_monoidOf_mk'_apply
 #align add_localization.mk_eq_add_monoid_of_mk'_apply AddLocalization.mk_eq_addMonoidOf_mk'_apply
+-/
 
+#print Localization.mk_eq_monoidOf_mk' /-
 @[simp, to_additive]
 theorem mk_eq_monoidOf_mk' : mk = (monoidOf S).mk' :=
   funext fun _ => funext fun _ => mk_eq_monoidOf_mk'_apply _ _
 #align localization.mk_eq_monoid_of_mk' Localization.mk_eq_monoidOf_mk'
 #align add_localization.mk_eq_add_monoid_of_mk' AddLocalization.mk_eq_addMonoidOf_mk'
+-/
 
 universe u
 
+#print Localization.liftOn_mk' /-
 @[simp, to_additive]
 theorem liftOn_mk' {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S) :
     liftOn ((monoidOf S).mk' a b) f H = f a b := by rw [← mk_eq_monoid_of_mk', lift_on_mk]
 #align localization.lift_on_mk' Localization.liftOn_mk'
 #align add_localization.lift_on_mk' AddLocalization.liftOn_mk'
+-/
 
+#print Localization.liftOn₂_mk' /-
 @[simp, to_additive]
 theorem liftOn₂_mk' {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
     liftOn₂ ((monoidOf S).mk' a b) ((monoidOf S).mk' c d) f H = f a b c d := by
   rw [← mk_eq_monoid_of_mk', lift_on₂_mk]
 #align localization.lift_on₂_mk' Localization.liftOn₂_mk'
 #align add_localization.lift_on₂_mk' AddLocalization.liftOn₂_mk'
+-/
 
 variable (f : Submonoid.LocalizationMap S N)
 
+#print Localization.mulEquivOfQuotient /-
 /-- Given a localization map `f : M →* N` for a submonoid `S`, we get an isomorphism between
 the localization of `M` at `S` as a quotient type and `N`. -/
 @[to_additive
@@ -1671,52 +1952,67 @@ noncomputable def mulEquivOfQuotient (f : Submonoid.LocalizationMap S N) : Local
   (monoidOf S).mulEquivOfLocalizations f
 #align localization.mul_equiv_of_quotient Localization.mulEquivOfQuotient
 #align add_localization.add_equiv_of_quotient AddLocalization.addEquivOfQuotient
+-/
 
 variable {f}
 
+#print Localization.mulEquivOfQuotient_apply /-
 @[simp, to_additive]
 theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lift f.map_units x :=
   rfl
 #align localization.mul_equiv_of_quotient_apply Localization.mulEquivOfQuotient_apply
 #align add_localization.add_equiv_of_quotient_apply AddLocalization.addEquivOfQuotient_apply
+-/
 
+#print Localization.mulEquivOfQuotient_mk' /-
 @[simp, to_additive]
 theorem mulEquivOfQuotient_mk' (x y) : mulEquivOfQuotient f ((monoidOf S).mk' x y) = f.mk' x y :=
   (monoidOf S).lift_mk' _ _ _
 #align localization.mul_equiv_of_quotient_mk' Localization.mulEquivOfQuotient_mk'
 #align add_localization.add_equiv_of_quotient_mk' AddLocalization.addEquivOfQuotient_mk'
+-/
 
+#print Localization.mulEquivOfQuotient_mk /-
 @[to_additive]
 theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y := by
   rw [mk_eq_monoid_of_mk'_apply] <;> exact mul_equiv_of_quotient_mk' _ _
 #align localization.mul_equiv_of_quotient_mk Localization.mulEquivOfQuotient_mk
 #align add_localization.add_equiv_of_quotient_mk AddLocalization.addEquivOfQuotient_mk
+-/
 
+#print Localization.mulEquivOfQuotient_monoidOf /-
 @[simp, to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
   (monoidOf S).liftEq _ _
 #align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOf
 #align add_localization.add_equiv_of_quotient_add_monoid_of AddLocalization.addEquivOfQuotient_addMonoidOf
+-/
 
+#print Localization.mulEquivOfQuotient_symm_mk' /-
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_mk' (x y) :
     (mulEquivOfQuotient f).symm (f.mk' x y) = (monoidOf S).mk' x y :=
   f.lift_mk' _ _ _
 #align localization.mul_equiv_of_quotient_symm_mk' Localization.mulEquivOfQuotient_symm_mk'
 #align add_localization.add_equiv_of_quotient_symm_mk' AddLocalization.addEquivOfQuotient_symm_mk'
+-/
 
+#print Localization.mulEquivOfQuotient_symm_mk /-
 @[to_additive]
 theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x y) = mk x y := by
   rw [mk_eq_monoid_of_mk'_apply] <;> exact mul_equiv_of_quotient_symm_mk' _ _
 #align localization.mul_equiv_of_quotient_symm_mk Localization.mulEquivOfQuotient_symm_mk
 #align add_localization.add_equiv_of_quotient_symm_mk AddLocalization.addEquivOfQuotient_symm_mk
+-/
 
+#print Localization.mulEquivOfQuotient_symm_monoidOf /-
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
     (mulEquivOfQuotient f).symm (f.toMap x) = (monoidOf S).toMap x :=
   f.liftEq _ _
 #align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOf
 #align add_localization.add_equiv_of_quotient_symm_add_monoid_of AddLocalization.addEquivOfQuotient_symm_addMonoidOf
+-/
 
 section Away
 
@@ -1756,12 +2052,15 @@ def Away.monoidOf : Submonoid.LocalizationMap.AwayMap x (Away x) :=
 #align add_localization.away.add_monoid_of AddLocalization.Away.addMonoidOf
 -/
 
+#print Localization.Away.mk_eq_monoidOf_mk' /-
 @[simp, to_additive]
 theorem Away.mk_eq_monoidOf_mk' : mk = (Away.monoidOf x).mk' :=
   mk_eq_monoidOf_mk'
 #align localization.away.mk_eq_monoid_of_mk' Localization.Away.mk_eq_monoidOf_mk'
 #align add_localization.away.mk_eq_add_monoid_of_mk' AddLocalization.Away.mk_eq_addMonoidOf_mk'
+-/
 
+#print Localization.Away.mulEquivOfQuotient /-
 /-- Given `x : M` and a localization map `f : M →* N` away from `x`, we get an isomorphism between
 the localization of `M` at the submonoid generated by `x` as a quotient type and `N`. -/
 @[to_additive
@@ -1771,6 +2070,7 @@ noncomputable def Away.mulEquivOfQuotient (f : Submonoid.LocalizationMap.AwayMap
   mulEquivOfQuotient f
 #align localization.away.mul_equiv_of_quotient Localization.Away.mulEquivOfQuotient
 #align add_localization.away.add_equiv_of_quotient AddLocalization.Away.addEquivOfQuotient
+-/
 
 end Away
 
@@ -1836,15 +2136,19 @@ instance : CommMonoidWithZero (Localization S) := by
 
 variable {S}
 
+#print Localization.mk_zero /-
 theorem mk_zero (x : S) : mk 0 (x : S) = 0 :=
   calc
     mk 0 x = mk 0 1 := mk_eq_mk_iff.mpr (r_of_eq (by simp))
     _ = 0 := rfl
 #align localization.mk_zero Localization.mk_zero
+-/
 
+#print Localization.liftOn_zero /-
 theorem liftOn_zero {p : Type _} (f : ∀ (x : M) (y : S), p) (H) : liftOn 0 f H = f 0 1 := by
   rw [← mk_zero 1, lift_on_mk]
 #align localization.lift_on_zero Localization.liftOn_zero
+-/
 
 end Localization
 
@@ -1852,13 +2156,16 @@ variable {S N}
 
 namespace Submonoid
 
+#print Submonoid.LocalizationMap.sec_zero_fst /-
 @[simp]
 theorem LocalizationMap.sec_zero_fst {f : LocalizationMap S N} : f.toMap (f.sec 0).fst = 0 := by
   rw [localization_map.sec_spec', MulZeroClass.mul_zero]
 #align submonoid.localization_map.sec_zero_fst Submonoid.LocalizationMap.sec_zero_fst
+-/
 
 namespace LocalizationWithZeroMap
 
+#print Submonoid.LocalizationWithZeroMap.lift /-
 /-- Given a localization map `f : M →*₀ N` for a submonoid `S ⊆ M` and a map of
 `comm_monoid_with_zero`s `g : M →*₀ P` such that `g y` is invertible for all `y : S`, the
 homomorphism induced from `N` to `P` sending `z : N` to `g x * (g y)⁻¹`, where `(x, y) : M × S`
@@ -1874,6 +2181,7 @@ noncomputable def lift (f : LocalizationWithZeroMap S N) (g : M →*₀ P)
       rw [localization_map.sec_zero_fst]
       exact f.to_monoid_with_zero_hom.map_zero.symm }
 #align submonoid.localization_with_zero_map.lift Submonoid.LocalizationWithZeroMap.lift
+-/
 
 end LocalizationWithZeroMap
 
@@ -1885,17 +2193,21 @@ namespace Localization
 
 variable {α : Type _} [CancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
 
+#print Localization.mk_left_injective /-
 @[to_additive]
 theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
   simpa [-mk_eq_monoid_of_mk', mk_eq_mk_iff, r_iff_exists] using h
 #align localization.mk_left_injective Localization.mk_left_injective
 #align add_localization.mk_left_injective AddLocalization.mk_left_injective
+-/
 
+#print Localization.mk_eq_mk_iff' /-
 @[to_additive]
 theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
   simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
 #align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'
 #align add_localization.mk_eq_mk_iff' AddLocalization.mk_eq_mk_iff'
+-/
 
 #print Localization.decidableEq /-
 @[to_additive]
@@ -1948,17 +2260,21 @@ instance : LT (Localization s) :=
             mul_lt_mul_iff_right, ← mul_lt_mul_iff_left, mul_left_comm, he, mul_left_comm,
             mul_left_comm ↑b₂, mul_lt_mul_iff_left])⟩
 
+#print Localization.mk_le_mk /-
 @[to_additive]
 theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ :=
   Iff.rfl
 #align localization.mk_le_mk Localization.mk_le_mk
 #align add_localization.mk_le_mk AddLocalization.mk_le_mk
+-/
 
+#print Localization.mk_lt_mk /-
 @[to_additive]
 theorem mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ :=
   Iff.rfl
 #align localization.mk_lt_mk Localization.mk_lt_mk
 #align add_localization.mk_lt_mk AddLocalization.mk_lt_mk
+-/
 
 -- declaring this separately to the instance below makes things faster
 @[to_additive]
@@ -2000,20 +2316,25 @@ instance : OrderedCancelCommMonoid (Localization s) :=
         simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab ⊢
         exact le_of_mul_le_mul_left' hab }
 
+#print Localization.decidableLE /-
 @[to_additive]
 instance decidableLE [DecidableRel ((· ≤ ·) : α → α → Prop)] :
     DecidableRel ((· ≤ ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_le_mk
 #align localization.decidable_le Localization.decidableLE
 #align add_localization.decidable_le AddLocalization.decidableLE
+-/
 
+#print Localization.decidableLT /-
 @[to_additive]
 instance decidableLT [DecidableRel ((· < ·) : α → α → Prop)] :
     DecidableRel ((· < ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_lt_mk
 #align localization.decidable_lt Localization.decidableLT
 #align add_localization.decidable_lt AddLocalization.decidableLT
+-/
 
+#print Localization.mkOrderEmbedding /-
 /-- An ordered cancellative monoid injects into its localization by sending `a` to `a / b`. -/
 @[to_additive
       "An ordered cancellative monoid injects into its localization by sending `a` to\n`a - b`.",
@@ -2025,6 +2346,7 @@ def mkOrderEmbedding (b : s) : α ↪o Localization s
   map_rel_iff' a b := by simp [-mk_eq_monoid_of_mk', mk_le_mk]
 #align localization.mk_order_embedding Localization.mkOrderEmbedding
 #align add_localization.mk_order_embedding AddLocalization.mkOrderEmbedding
+-/
 
 end OrderedCancelCommMonoid
 
Diff
@@ -166,13 +166,11 @@ def r' : Con (M × S) :=
       (t₂ * t₁ * b.2 : M) * (c.2 * a.1) = t₂ * c.2 * (t₁ * (b.2 * a.1)) := by ac_rfl
       _ = t₁ * a.2 * (t₂ * (c.2 * b.1)) := by rw [ht₁]; ac_rfl
       _ = t₂ * t₁ * b.2 * (a.2 * c.1) := by rw [ht₂]; ac_rfl
-      
   · rintro a b c d ⟨t₁, ht₁⟩ ⟨t₂, ht₂⟩
     use t₂ * t₁
     calc
       (t₂ * t₁ : M) * (b.2 * d.2 * (a.1 * c.1)) = t₂ * (d.2 * c.1) * (t₁ * (b.2 * a.1)) := by ac_rfl
       _ = (t₂ * t₁ : M) * (a.2 * c.2 * (b.1 * d.1)) := by rw [ht₁, ht₂]; ac_rfl
-      
 #align localization.r' Localization.r'
 #align add_localization.r' AddLocalization.r'
 
@@ -1842,7 +1840,6 @@ theorem mk_zero (x : S) : mk 0 (x : S) = 0 :=
   calc
     mk 0 x = mk 0 1 := mk_eq_mk_iff.mpr (r_of_eq (by simp))
     _ = 0 := rfl
-    
 #align localization.mk_zero Localization.mk_zero
 
 theorem liftOn_zero {p : Type _} (f : ∀ (x : M) (y : S), p) (H) : liftOn 0 f H = f 0 1 := by
Diff
@@ -145,7 +145,7 @@ quotient is the localization of `M` at `S`, defined as the unique congruence rel
 @[to_additive
       "The congruence relation on `M × S`, `M` an `add_comm_monoid` and `S`\nan `add_submonoid` of `M`, whose quotient is the localization of `M` at `S`, defined as the unique\ncongruence relation on `M × S` such that for any other congruence relation `s` on `M × S` where\nfor all `y ∈ S`, `(0, 0) ∼ (y, y)` under `s`, we have that `(x₁, y₁) ∼ (x₂, y₂)` by `r` implies\n`(x₁, y₁) ∼ (x₂, y₂)` by `s`."]
 def r (S : Submonoid M) : Con (M × S) :=
-  sInf { c | ∀ y : S, c 1 (y, y) }
+  sInf {c | ∀ y : S, c 1 (y, y)}
 #align localization.r Localization.r
 #align add_localization.r AddLocalization.r
 
@@ -442,7 +442,7 @@ variable {R R₁ R₂ : Type _}
 
 /-- Scalar multiplication in a monoid localization is defined as `c • ⟨a, b⟩ = ⟨c • a, b⟩`. -/
 protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Localization S) :
-  Localization S :=
+    Localization S :=
   Localization.liftOn z (fun a b => mk (c • a) b) fun a a' b b' h =>
     mk_eq_mk_iff.2
       (by
Diff
@@ -158,7 +158,7 @@ def r' : Con (M × S) :=
   -- note we multiply by `c` on the left so that we can later generalize to `•`
   refine'
     { R := fun a b : M × S => ∃ c : S, ↑c * (↑b.2 * a.1) = c * (a.2 * b.1)
-      iseqv := ⟨fun a => ⟨1, rfl⟩, fun a b ⟨c, hc⟩ => ⟨c, hc.symm⟩, _⟩.. }
+      iseqv := ⟨fun a => ⟨1, rfl⟩, fun a b ⟨c, hc⟩ => ⟨c, hc.symm⟩, _⟩ .. }
   · rintro a b c ⟨t₁, ht₁⟩ ⟨t₂, ht₂⟩
     use t₂ * t₁ * b.2
     simp only [Submonoid.coe_mul]
@@ -188,7 +188,7 @@ theorem r_eq_r' : r S = r' S :=
       rw [← one_mul (p, q), ← one_mul (x, y)]
       refine' b.trans (b.mul (H (t * y)) (b.refl _)) _
       convert b.symm (b.mul (H (t * q)) (b.refl (x, y))) using 1
-      dsimp only [Prod.mk_mul_mk, Submonoid.coe_mul] at ht⊢
+      dsimp only [Prod.mk_mul_mk, Submonoid.coe_mul] at ht ⊢
       simp_rw [mul_assoc, ht, mul_comm y q]
 #align localization.r_eq_r' Localization.r_eq_r'
 #align add_localization.r_eq_r' AddLocalization.r_eq_r'
@@ -448,10 +448,10 @@ protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Loc
       (by
         cases' b with b hb
         cases' b' with b' hb'
-        rw [r_eq_r'] at h⊢
+        rw [r_eq_r'] at h ⊢
         cases' h with t ht
         use t
-        dsimp only [Subtype.coe_mk] at ht⊢
+        dsimp only [Subtype.coe_mk] at ht ⊢
         -- TODO: this definition should take `smul_comm_class R M M` instead of `is_scalar_tower R M M` if
         -- we ever want to generalize to the non-commutative case.
         haveI : SMulCommClass R M M :=
@@ -502,9 +502,9 @@ instance [SMul R M] [SMul Rᵐᵒᵖ M] [IsScalarTower R M M] [IsScalarTower R
 
 instance [Monoid R] [MulAction R M] [IsScalarTower R M M] : MulAction R (Localization S)
     where
-  one_smul := Localization.ind <| Prod.rec <| by intros ; simp only [Localization.smul_mk, one_smul]
+  one_smul := Localization.ind <| Prod.rec <| by intros; simp only [Localization.smul_mk, one_smul]
   mul_smul s₁ s₂ :=
-    Localization.ind <| Prod.rec <| by intros ; simp only [Localization.smul_mk, mul_smul]
+    Localization.ind <| Prod.rec <| by intros; simp only [Localization.smul_mk, mul_smul]
 
 instance [Monoid R] [MulDistribMulAction R M] [IsScalarTower R M M] :
     MulDistribMulAction R (Localization S)
@@ -674,9 +674,9 @@ variable (f : LocalizationMap S N)
 theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
     f.toMap x = f.toMap y :=
   by
-  rw [f.to_map.map_mul, f.to_map.map_mul] at h
+  rw [f.to_map.map_mul, f.to_map.map_mul] at h 
   cases' f.map_units c with u hu
-  rw [← hu] at h
+  rw [← hu] at h 
   exact (Units.mul_right_inj u).1 h
 #align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancel
 #align add_submonoid.localization_map.map_right_cancel AddSubmonoid.LocalizationMap.map_right_cancel
@@ -727,7 +727,7 @@ theorem mk'_sec (z : N) : f.mk' (f.sec z).1 (f.sec z).2 = z :=
 -/
 
 @[to_additive]
-theorem mk'_surjective (z : N) : ∃ (x : _)(y : S), f.mk' x y = z :=
+theorem mk'_surjective (z : N) : ∃ (x : _) (y : S), f.mk' x y = z :=
   ⟨(f.sec z).1, (f.sec z).2, f.mk'_sec z⟩
 #align submonoid.localization_map.mk'_surjective Submonoid.LocalizationMap.mk'_surjective
 #align add_submonoid.localization_map.mk'_surjective AddSubmonoid.LocalizationMap.mk'_surjective
@@ -918,7 +918,14 @@ noncomputable def lift : N →* P
     rw [mul_inv_left hg, ← mul_assoc, ← mul_assoc, mul_inv_right hg, mul_comm _ (g (f.sec y).1), ←
       mul_assoc, ← mul_assoc, mul_inv_right hg]
     repeat' rw [← g.map_mul]
-    exact f.eq_of_eq hg (by repeat' first |rw [f.to_map.map_mul]|rw [sec_spec'] <;> ac_rfl)
+    exact
+      f.eq_of_eq hg
+        (by
+          repeat'
+              first
+              | rw [f.to_map.map_mul]
+              | rw [sec_spec'] <;>
+            ac_rfl)
 #align submonoid.localization_map.lift Submonoid.LocalizationMap.lift
 #align add_submonoid.localization_map.lift AddSubmonoid.LocalizationMap.lift
 
@@ -1091,7 +1098,7 @@ theorem lift_injective_iff :
     constructor
     · exact f.eq_of_eq hg
     · intro h
-      rw [← f.lift_eq hg, ← f.lift_eq hg] at h
+      rw [← f.lift_eq hg, ← f.lift_eq hg] at h 
       exact H h
   · intro H z w h
     obtain ⟨x, hx⟩ := f.surj z
@@ -1478,7 +1485,7 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
           ⟨fun ⟨c, hc⟩ =>
             let ⟨d, hd⟩ := k.to_equiv.surjective c
             ⟨⟨d, H' ▸ show k d ∈ S from hd.symm ▸ c.2⟩, by
-              erw [← hd, ← k.map_mul, ← k.map_mul] at hc <;> exact k.to_equiv.injective hc⟩,
+              erw [← hd, ← k.map_mul, ← k.map_mul] at hc  <;> exact k.to_equiv.injective hc⟩,
             fun ⟨c, hc⟩ =>
             ⟨⟨k c, H ▸ Set.mem_image_of_mem k c.2⟩, by
               erw [← k.map_mul] <;> rw [hc, k.map_mul] <;> rfl⟩⟩
@@ -1923,7 +1930,7 @@ instance : LE (Localization s) :=
         (by
           obtain ⟨e, he⟩ := r_iff_exists.1 hab
           obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
-          simp only [mul_right_inj] at he hf
+          simp only [mul_right_inj] at he hf 
           dsimp
           rw [← mul_le_mul_iff_right, mul_right_comm, ← hf, mul_right_comm, mul_right_comm ↑a₂,
             mul_le_mul_iff_right, ← mul_le_mul_iff_left, mul_left_comm, he, mul_left_comm,
@@ -1938,7 +1945,7 @@ instance : LT (Localization s) :=
         (by
           obtain ⟨e, he⟩ := r_iff_exists.1 hab
           obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
-          simp only [mul_right_inj] at he hf
+          simp only [mul_right_inj] at he hf 
           dsimp
           rw [← mul_lt_mul_iff_right, mul_right_comm, ← hf, mul_right_comm, mul_right_comm ↑a₂,
             mul_lt_mul_iff_right, ← mul_lt_mul_iff_left, mul_left_comm, he, mul_left_comm,
@@ -1966,7 +1973,7 @@ instance : PartialOrder (Localization s)
   le_trans a b c :=
     Localization.induction_on₃ a b c fun a b c hab hbc =>
       by
-      simp only [mk_le_mk] at hab hbc⊢
+      simp only [mk_le_mk] at hab hbc ⊢
       refine' le_of_mul_le_mul_left' _
       · exact b.2
       rw [mul_left_comm]
@@ -1977,7 +1984,7 @@ instance : PartialOrder (Localization s)
     induction' b with b₁ b₂
     simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists]
     exact fun hab hba => ⟨1, by rw [hab.antisymm hba]⟩
-    all_goals intros ; rfl
+    all_goals intros; rfl
   lt_iff_le_not_le a b := Localization.induction_on₂ a b fun a b => lt_iff_le_not_le
 
 @[to_additive]
@@ -1988,12 +1995,12 @@ instance : OrderedCancelCommMonoid (Localization s) :=
       Localization.induction_on₂ a b fun a b hab c =>
         Localization.induction_on c fun c =>
           by
-          simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ c.1] at hab⊢
+          simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ c.1] at hab ⊢
           exact mul_le_mul_left' hab _
     le_of_mul_le_mul_left := fun a b c =>
       Localization.induction_on₃ a b c fun a b c hab =>
         by
-        simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab⊢
+        simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab ⊢
         exact le_of_mul_le_mul_left' hab }
 
 @[to_additive]
Diff
@@ -137,12 +137,6 @@ namespace Localization
 run_cmd
   to_additive.map_namespace `localization `add_localization
 
-/- warning: localization.r -> Localization.r is a dubious translation:
-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))), Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))), Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))
-Case conversion may be inaccurate. Consider using '#align localization.r Localization.rₓ'. -/
 /-- The congruence relation on `M × S`, `M` a `comm_monoid` and `S` a submonoid of `M`, whose
 quotient is the localization of `M` at `S`, defined as the unique congruence relation on
 `M × S` such that for any other congruence relation `s` on `M × S` where for all `y ∈ S`,
@@ -155,12 +149,6 @@ def r (S : Submonoid M) : Con (M × S) :=
 #align localization.r Localization.r
 #align add_localization.r AddLocalization.r
 
-/- warning: localization.r' -> Localization.r' is a dubious translation:
-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))), Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))), Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))
-Case conversion may be inaccurate. Consider using '#align localization.r' Localization.r'ₓ'. -/
 /-- An alternate form of the congruence relation on `M × S`, `M` a `comm_monoid` and `S` a
 submonoid of `M`, whose quotient is the localization of `M` at `S`. -/
 @[to_additive
@@ -188,12 +176,6 @@ def r' : Con (M × S) :=
 #align localization.r' Localization.r'
 #align add_localization.r' AddLocalization.r'
 
-/- warning: localization.r_eq_r' -> Localization.r_eq_r' is a dubious translation:
-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))), Eq.{succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Localization.r'.{u1} M _inst_1 S)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))), Eq.{succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Localization.r'.{u1} M _inst_1 S)
-Case conversion may be inaccurate. Consider using '#align localization.r_eq_r' Localization.r_eq_r'ₓ'. -/
 /-- The congruence relation used to localize a `comm_monoid` at a submonoid can be expressed
 equivalently as an infimum (see `localization.r`) or explicitly
 (see `localization.r'`). -/
@@ -213,9 +195,6 @@ theorem r_eq_r' : r S = r' S :=
 
 variable {S}
 
-/- warning: localization.r_iff_exists -> Localization.r_iff_exists is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.r_iff_exists Localization.r_iff_existsₓ'. -/
 @[to_additive]
 theorem r_iff_exists {x y : M × S} : r S x y ↔ ∃ c : S, ↑c * (↑y.2 * x.1) = c * (x.2 * y.1) := by
   rw [r_eq_r' S] <;> rfl
@@ -305,12 +284,6 @@ instance : CommMonoid (Localization S) where
 
 variable {S}
 
-/- warning: localization.mk -> Localization.mk is a dubious translation:
-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))}, M -> (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) -> (Localization.{u1} M _inst_1 S)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))}, M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> (Localization.{u1} M _inst_1 S)
-Case conversion may be inaccurate. Consider using '#align localization.mk Localization.mkₓ'. -/
 /-- Given a `comm_monoid` `M` and submonoid `S`, `mk` sends `x : M`, `y ∈ S` to the equivalence
 class of `(x, y)` in the localization of `M` at `S`. -/
 @[to_additive
@@ -320,9 +293,6 @@ def mk (x : M) (y : S) : Localization S :=
 #align localization.mk Localization.mk
 #align add_localization.mk AddLocalization.mk
 
-/- warning: localization.mk_eq_mk_iff -> Localization.mk_eq_mk_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.mk_eq_mk_iff Localization.mk_eq_mk_iffₓ'. -/
 @[to_additive]
 theorem mk_eq_mk_iff {a c : M} {b d : S} : mk a b = mk c d ↔ r S ⟨a, b⟩ ⟨c, d⟩ :=
   (r S).Eq
@@ -331,9 +301,6 @@ theorem mk_eq_mk_iff {a c : M} {b d : S} : mk a b = mk c d ↔ r S ⟨a, b⟩ 
 
 universe u
 
-/- warning: localization.rec -> Localization.rec is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.rec Localization.recₓ'. -/
 /-- Dependent recursion principle for localizations: given elements `f a b : p (mk a b)`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (with the correct coercions),
 then `f` is defined on the whole `localization S`. -/
@@ -350,12 +317,6 @@ def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
 #align localization.rec Localization.rec
 #align add_localization.rec AddLocalization.rec
 
-/- warning: localization.rec_on_subsingleton₂ -> Localization.recOnSubsingleton₂ is a dubious translation:
-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))} {r : (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S) -> Sort.{u2}} [h : forall (a : M) (c : M) (b : 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) (d : 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), Subsingleton.{u2} (r (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d))] (x : Localization.{u1} M _inst_1 S) (y : Localization.{u1} M _inst_1 S), (forall (a : M) (c : M) (b : 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) (d : 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), r (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d)) -> (r x 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))} {r : (Localization.{u2} M _inst_1 S) -> (Localization.{u2} M _inst_1 S) -> Sort.{u1}} [h : forall (a : M) (c : M) (b : 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)) (d : 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)), Subsingleton.{u1} (r (Localization.mk.{u2} M _inst_1 S a b) (Localization.mk.{u2} M _inst_1 S c d))] (x : Localization.{u2} M _inst_1 S) (y : Localization.{u2} M _inst_1 S), (forall (a : M) (c : M) (b : 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)) (d : 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)), r (Localization.mk.{u2} M _inst_1 S a b) (Localization.mk.{u2} M _inst_1 S c d)) -> (r x y)
-Case conversion may be inaccurate. Consider using '#align localization.rec_on_subsingleton₂ Localization.recOnSubsingleton₂ₓ'. -/
 /-- Copy of `quotient.rec_on_subsingleton₂` for `localization` -/
 @[elab_as_elim, to_additive "Copy of `quotient.rec_on_subsingleton₂` for `add_localization`"]
 def recOnSubsingleton₂ {r : Localization S → Localization S → Sort u}
@@ -366,45 +327,24 @@ def recOnSubsingleton₂ {r : Localization S → Localization S → Sort u}
 #align localization.rec_on_subsingleton₂ Localization.recOnSubsingleton₂
 #align add_localization.rec_on_subsingleton₂ AddLocalization.recOnSubsingleton₂
 
-/- warning: localization.mk_mul -> Localization.mk_mul is a dubious translation:
-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))} (a : M) (c : M) (b : 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) (d : 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 u1} (Localization.{u1} M _inst_1 S) (HMul.hMul.{u1, u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (instHMul.{u1} (Localization.{u1} M _inst_1 S) (Localization.hasMul.{u1} M _inst_1 S)) (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d)) (Localization.mk.{u1} M _inst_1 S (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) a c) (HMul.hMul.{u1, u1, 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) (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) (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) (instHMul.{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) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)) b d))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (a : M) (c : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (HMul.hMul.{u1, u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (instHMul.{u1} (Localization.{u1} M _inst_1 S) (Localization.instMulLocalization.{u1} M _inst_1 S)) (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d)) (Localization.mk.{u1} M _inst_1 S (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) a c) (HMul.hMul.{u1, u1, u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (instHMul.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)) b d))
-Case conversion may be inaccurate. Consider using '#align localization.mk_mul Localization.mk_mulₓ'. -/
 @[to_additive]
 theorem mk_mul (a c : M) (b d : S) : mk a b * mk c d = mk (a * c) (b * d) :=
   rfl
 #align localization.mk_mul Localization.mk_mul
 #align add_localization.mk_add AddLocalization.mk_add
 
-/- warning: localization.mk_one -> Localization.mk_one is a dubious translation:
-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))}, Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S (OfNat.ofNat.{u1} M 1 (OfNat.mk.{u1} M 1 (One.one.{u1} M (MulOneClass.toHasOne.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (OfNat.ofNat.{u1} (Localization.{u1} M _inst_1 S) 1 (OfNat.mk.{u1} (Localization.{u1} M _inst_1 S) 1 (One.one.{u1} (Localization.{u1} M _inst_1 S) (Localization.hasOne.{u1} M _inst_1 S))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))}, Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S (OfNat.ofNat.{u1} M 1 (One.toOfNat1.{u1} M (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (OfNat.ofNat.{u1} (Localization.{u1} M _inst_1 S) 1 (One.toOfNat1.{u1} (Localization.{u1} M _inst_1 S) (Localization.instOneLocalization.{u1} M _inst_1 S)))
-Case conversion may be inaccurate. Consider using '#align localization.mk_one Localization.mk_oneₓ'. -/
 @[to_additive]
 theorem mk_one : mk 1 (1 : S) = 1 :=
   rfl
 #align localization.mk_one Localization.mk_one
 #align add_localization.mk_zero AddLocalization.mk_zero
 
-/- warning: localization.mk_pow -> Localization.mk_pow is a dubious translation:
-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 : Nat) (a : M) (b : 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 u1} (Localization.{u1} M _inst_1 S) (HPow.hPow.{u1, 0, u1} (Localization.{u1} M _inst_1 S) Nat (Localization.{u1} M _inst_1 S) (instHPow.{u1, 0} (Localization.{u1} M _inst_1 S) Nat (Monoid.Pow.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Localization.mk.{u1} M _inst_1 S a b) n) (Localization.mk.{u1} M _inst_1 S (HPow.hPow.{u1, 0, u1} M Nat M (instHPow.{u1, 0} M Nat (Monoid.Pow.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) a n) (HPow.hPow.{u1, 0, 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) Nat (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) (instHPow.{u1, 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) Nat (SubmonoidClass.nPow.{u1, u1} M (CommMonoid.toMonoid.{u1} M _inst_1) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) b n))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (n : Nat) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (HPow.hPow.{u1, 0, u1} (Localization.{u1} M _inst_1 S) Nat (Localization.{u1} M _inst_1 S) (instHPow.{u1, 0} (Localization.{u1} M _inst_1 S) Nat (Monoid.Pow.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Localization.mk.{u1} M _inst_1 S a b) n) (Localization.mk.{u1} M _inst_1 S (HPow.hPow.{u1, 0, u1} M Nat M (instHPow.{u1, 0} M Nat (Monoid.Pow.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) a n) (HPow.hPow.{u1, 0, u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) Nat (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (instHPow.{u1, 0} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) Nat (SubmonoidClass.nPow.{u1, u1} M (CommMonoid.toMonoid.{u1} M _inst_1) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) b n))
-Case conversion may be inaccurate. Consider using '#align localization.mk_pow Localization.mk_powₓ'. -/
 @[to_additive]
 theorem mk_pow (n : ℕ) (a : M) (b : S) : mk a b ^ n = mk (a ^ n) (b ^ n) :=
   rfl
 #align localization.mk_pow Localization.mk_pow
 #align add_localization.mk_nsmul AddLocalization.mk_nsmul
 
-/- warning: localization.rec_mk -> Localization.ndrec_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.rec_mk Localization.ndrec_mkₓ'. -/
 @[simp, to_additive]
 theorem ndrec_mk {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b)) (H) (a : M)
     (b : S) : (rec f H (mk a b) : p (mk a b)) = f a b :=
@@ -412,9 +352,6 @@ theorem ndrec_mk {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk
 #align localization.rec_mk Localization.ndrec_mk
 #align add_localization.rec_mk AddLocalization.ndrec_mk
 
-/- warning: localization.lift_on -> Localization.liftOn is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.lift_on Localization.liftOnₓ'. -/
 /-- Non-dependent recursion principle for localizations: given elements `f a b : p`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d`,
 then `f` is defined on the whole `localization S`. -/
@@ -427,9 +364,6 @@ def liftOn {p : Sort u} (x : Localization S) (f : M → S → p)
 #align localization.lift_on Localization.liftOn
 #align add_localization.lift_on AddLocalization.liftOn
 
-/- warning: localization.lift_on_mk -> Localization.liftOn_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.lift_on_mk Localization.liftOn_mkₓ'. -/
 @[to_additive]
 theorem liftOn_mk {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S) :
     liftOn (mk a b) f H = f a b :=
@@ -437,33 +371,18 @@ theorem liftOn_mk {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S)
 #align localization.lift_on_mk Localization.liftOn_mk
 #align add_localization.lift_on_mk AddLocalization.liftOn_mk
 
-/- warning: localization.ind -> Localization.ind is a dubious translation:
-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))} {p : (Localization.{u1} M _inst_1 S) -> Prop}, (forall (y : Prod.{u1, u1} M (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)), p (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (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) y) (Prod.snd.{u1, u1} M (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) y))) -> (forall (x : Localization.{u1} M _inst_1 S), p x)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : (Localization.{u1} M _inst_1 S) -> Prop}, (forall (y : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))), p (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y))) -> (forall (x : Localization.{u1} M _inst_1 S), p x)
-Case conversion may be inaccurate. Consider using '#align localization.ind Localization.indₓ'. -/
 @[elab_as_elim, to_additive]
 theorem ind {p : Localization S → Prop} (H : ∀ y : M × S, p (mk y.1 y.2)) (x) : p x :=
   rec (fun a b => H (a, b)) (fun _ _ _ _ _ => rfl) x
 #align localization.ind Localization.ind
 #align add_localization.ind AddLocalization.ind
 
-/- warning: localization.induction_on -> Localization.induction_on is a dubious translation:
-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))} {p : (Localization.{u1} M _inst_1 S) -> Prop} (x : Localization.{u1} M _inst_1 S), (forall (y : Prod.{u1, u1} M (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)), p (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (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) y) (Prod.snd.{u1, u1} M (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) y))) -> (p x)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : (Localization.{u1} M _inst_1 S) -> Prop} (x : Localization.{u1} M _inst_1 S), (forall (y : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))), p (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y))) -> (p x)
-Case conversion may be inaccurate. Consider using '#align localization.induction_on Localization.induction_onₓ'. -/
 @[elab_as_elim, to_additive]
 theorem induction_on {p : Localization S → Prop} (x) (H : ∀ y : M × S, p (mk y.1 y.2)) : p x :=
   ind H x
 #align localization.induction_on Localization.induction_on
 #align add_localization.induction_on AddLocalization.induction_on
 
-/- warning: localization.lift_on₂ -> Localization.liftOn₂ is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.lift_on₂ Localization.liftOn₂ₓ'. -/
 /-- Non-dependent recursion principle for localizations: given elements `f x y : p`
 for all `x` and `y`, such that `r S x x'` and `r S y y'` implies `f x y = f x' y'`,
 then `f` is defined on the whole `localization S`. -/
@@ -480,9 +399,6 @@ def liftOn₂ {p : Sort u} (x y : Localization S) (f : M → S → M → S → p
 #align localization.lift_on₂ Localization.liftOn₂
 #align add_localization.lift_on₂ AddLocalization.liftOn₂
 
-/- warning: localization.lift_on₂_mk -> Localization.liftOn₂_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.lift_on₂_mk Localization.liftOn₂_mkₓ'. -/
 @[to_additive]
 theorem liftOn₂_mk {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
     liftOn₂ (mk a b) (mk c d) f H = f a b c d :=
@@ -490,12 +406,6 @@ theorem liftOn₂_mk {p : Sort _} (f : M → S → M → S → p) (H) (a c : M)
 #align localization.lift_on₂_mk Localization.liftOn₂_mk
 #align add_localization.lift_on₂_mk AddLocalization.liftOn₂_mk
 
-/- warning: localization.induction_on₂ -> Localization.induction_on₂ is a dubious translation:
-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))} {p : (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S) -> Prop} (x : Localization.{u1} M _inst_1 S) (y : Localization.{u1} M _inst_1 S), (forall (x : Prod.{u1, u1} M (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)) (y : Prod.{u1, u1} M (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)), p (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (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) x) (Prod.snd.{u1, u1} M (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) x)) (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (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) y) (Prod.snd.{u1, u1} M (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) y))) -> (p x y)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S) -> Prop} (x : Localization.{u1} M _inst_1 S) (y : Localization.{u1} M _inst_1 S), (forall (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (y : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))), p (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)) (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y))) -> (p x y)
-Case conversion may be inaccurate. Consider using '#align localization.induction_on₂ Localization.induction_on₂ₓ'. -/
 @[elab_as_elim, to_additive]
 theorem induction_on₂ {p : Localization S → Localization S → Prop} (x y)
     (H : ∀ x y : M × S, p (mk x.1 x.2) (mk y.1 y.2)) : p x y :=
@@ -503,12 +413,6 @@ theorem induction_on₂ {p : Localization S → Localization S → Prop} (x y)
 #align localization.induction_on₂ Localization.induction_on₂
 #align add_localization.induction_on₂ AddLocalization.induction_on₂
 
-/- warning: localization.induction_on₃ -> Localization.induction_on₃ is a dubious translation:
-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))} {p : (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S) -> Prop} (x : Localization.{u1} M _inst_1 S) (y : Localization.{u1} M _inst_1 S) (z : Localization.{u1} M _inst_1 S), (forall (x : Prod.{u1, u1} M (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)) (y : Prod.{u1, u1} M (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)) (z : Prod.{u1, u1} M (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)), p (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (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) x) (Prod.snd.{u1, u1} M (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) x)) (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (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) y) (Prod.snd.{u1, u1} M (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) y)) (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (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) z) (Prod.snd.{u1, u1} M (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) z))) -> (p x y z)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S) -> Prop} (x : Localization.{u1} M _inst_1 S) (y : Localization.{u1} M _inst_1 S) (z : Localization.{u1} M _inst_1 S), (forall (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (y : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (z : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))), p (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)) (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y)) (Localization.mk.{u1} M _inst_1 S (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) z) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) z))) -> (p x y z)
-Case conversion may be inaccurate. Consider using '#align localization.induction_on₃ Localization.induction_on₃ₓ'. -/
 @[elab_as_elim, to_additive]
 theorem induction_on₃ {p : Localization S → Localization S → Localization S → Prop} (x y z)
     (H : ∀ x y z : M × S, p (mk x.1 x.2) (mk y.1 y.2) (mk z.1 z.2)) : p x y z :=
@@ -516,29 +420,17 @@ theorem induction_on₃ {p : Localization S → Localization S → Localization
 #align localization.induction_on₃ Localization.induction_on₃
 #align add_localization.induction_on₃ AddLocalization.induction_on₃
 
-/- warning: localization.one_rel -> Localization.one_rel is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.one_rel Localization.one_relₓ'. -/
 @[to_additive]
 theorem one_rel (y : S) : r S 1 (y, y) := fun b hb => hb y
 #align localization.one_rel Localization.one_rel
 #align add_localization.zero_rel AddLocalization.zero_rel
 
-/- warning: localization.r_of_eq -> Localization.r_of_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.r_of_eq Localization.r_of_eqₓ'. -/
 @[to_additive]
 theorem r_of_eq {x y : M × S} (h : ↑y.2 * x.1 = ↑x.2 * y.1) : r S x y :=
   r_iff_exists.2 ⟨1, by rw [h]⟩
 #align localization.r_of_eq Localization.r_of_eq
 #align add_localization.r_of_eq AddLocalization.r_of_eq
 
-/- warning: localization.mk_self -> Localization.mk_self is a dubious translation:
-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))} (a : 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 u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S ((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))))) a) a) (OfNat.ofNat.{u1} (Localization.{u1} M _inst_1 S) 1 (OfNat.mk.{u1} (Localization.{u1} M _inst_1 S) 1 (One.one.{u1} (Localization.{u1} M _inst_1 S) (Localization.hasOne.{u1} M _inst_1 S))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (a : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) a) a) (OfNat.ofNat.{u1} (Localization.{u1} M _inst_1 S) 1 (One.toOfNat1.{u1} (Localization.{u1} M _inst_1 S) (Localization.instOneLocalization.{u1} M _inst_1 S)))
-Case conversion may be inaccurate. Consider using '#align localization.mk_self Localization.mk_selfₓ'. -/
 @[to_additive]
 theorem mk_self (a : S) : mk (a : M) a = 1 := by symm; rw [← mk_one, mk_eq_mk_iff]; exact one_rel a
 #align localization.mk_self Localization.mk_self
@@ -548,12 +440,6 @@ section Scalar
 
 variable {R R₁ R₂ : Type _}
 
-/- warning: localization.smul -> Localization.smul is a dubious translation:
-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))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (Mul.toSMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) _inst_4], R -> (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4], R -> (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S)
-Case conversion may be inaccurate. Consider using '#align localization.smul Localization.smulₓ'. -/
 /-- Scalar multiplication in a monoid localization is defined as `c • ⟨a, b⟩ = ⟨c • a, b⟩`. -/
 protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Localization S) :
   Localization S :=
@@ -575,12 +461,6 @@ protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Loc
 
 instance [SMul R M] [IsScalarTower R M M] : SMul R (Localization S) where smul := Localization.smul
 
-/- warning: localization.smul_mk -> Localization.smul_mk is a dubious translation:
-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))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (Mul.toSMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) _inst_4] (c : R) (a : M) (b : 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 u1} (Localization.{u1} M _inst_1 S) (SMul.smul.{u2, u1} R (Localization.{u1} M _inst_1 S) (Localization.hasSmul.{u1, u2} M _inst_1 S R _inst_4 _inst_5) c (Localization.mk.{u1} M _inst_1 S a b)) (Localization.mk.{u1} M _inst_1 S (SMul.smul.{u2, u1} R M _inst_4 c a) b)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4] (c : R) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (HSMul.hSMul.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (instHSMul.{u2, u1} R (Localization.{u1} M _inst_1 S) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5)) c (Localization.mk.{u1} M _inst_1 S a b)) (Localization.mk.{u1} M _inst_1 S (HSMul.hSMul.{u2, u1, u1} R M M (instHSMul.{u2, u1} R M _inst_4) c a) b)
-Case conversion may be inaccurate. Consider using '#align localization.smul_mk Localization.smul_mkₓ'. -/
 theorem smul_mk [SMul R M] [IsScalarTower R M M] (c : R) (a b) :
     c • (mk a b : Localization S) = mk (c • a) b := by unfold SMul.smul Localization.smul;
   apply lift_on_mk
@@ -596,12 +476,6 @@ instance [SMul R₁ M] [SMul R₂ M] [IsScalarTower R₁ M M] [IsScalarTower R
     where smul_assoc s t :=
     Localization.ind <| Prod.rec fun r x => by simp only [smul_mk, smul_assoc s t r]
 
-/- warning: localization.smul_comm_class_right -> Localization.smulCommClass_right is a dubious translation:
-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))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (Mul.toSMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) _inst_4], SMulCommClass.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.hasSmul.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (Mul.toSMul.{u1} (Localization.{u1} M _inst_1 S) (Localization.hasMul.{u1} M _inst_1 S))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4], SMulCommClass.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (MulAction.toSMul.{u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)) (Monoid.toMulAction.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))))
-Case conversion may be inaccurate. Consider using '#align localization.smul_comm_class_right Localization.smulCommClass_rightₓ'. -/
 instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
     SMulCommClass R (Localization S) (Localization S)
     where smul_comm s :=
@@ -612,12 +486,6 @@ instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
             simp only [smul_mk, smul_eq_mul, mk_mul, mul_comm r₁, smul_mul_assoc]
 #align localization.smul_comm_class_right Localization.smulCommClass_right
 
-/- warning: localization.is_scalar_tower_right -> Localization.isScalarTower_right is a dubious translation:
-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))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (Mul.toSMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) _inst_4], IsScalarTower.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.hasSmul.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (Mul.toSMul.{u1} (Localization.{u1} M _inst_1 S) (Localization.hasMul.{u1} M _inst_1 S)) (Localization.hasSmul.{u1, u2} M _inst_1 S R _inst_4 _inst_5)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4], IsScalarTower.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (MulAction.toSMul.{u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)) (Monoid.toMulAction.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5)
-Case conversion may be inaccurate. Consider using '#align localization.is_scalar_tower_right Localization.isScalarTower_rightₓ'. -/
 instance isScalarTower_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
     IsScalarTower R (Localization S) (Localization S)
     where smul_assoc s :=
@@ -655,9 +523,6 @@ variable {S N}
 
 namespace MonoidHom
 
-/- warning: monoid_hom.to_localization_map -> MonoidHom.toLocalizationMap is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align monoid_hom.to_localization_map MonoidHom.toLocalizationMapₓ'. -/
 /-- Makes a localization map from a `comm_monoid` hom satisfying the characteristic predicate. -/
 @[to_additive
       "Makes a localization map from an `add_comm_monoid` hom satisfying the characteristic\npredicate."]
@@ -686,66 +551,36 @@ abbrev toMap (f : LocalizationMap S N) :=
 #align add_submonoid.localization_map.to_map AddSubmonoid.LocalizationMap.toMap
 -/
 
-/- warning: submonoid.localization_map.ext -> Submonoid.LocalizationMap.ext is a dubious translation:
-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} {g : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u1) (succ u2)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) f g)
-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} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.ext Submonoid.LocalizationMap.extₓ'. -/
 @[ext, to_additive]
 theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f = g := by
   rcases f with ⟨⟨⟩⟩; rcases g with ⟨⟨⟩⟩; simp only; exact funext h
 #align submonoid.localization_map.ext Submonoid.LocalizationMap.ext
 #align add_submonoid.localization_map.ext AddSubmonoid.LocalizationMap.ext
 
-/- warning: submonoid.localization_map.ext_iff -> Submonoid.LocalizationMap.ext_iff is a dubious translation:
-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} {g : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u1) (succ u2)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 g) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.ext_iff Submonoid.LocalizationMap.ext_iffₓ'. -/
 @[to_additive]
 theorem ext_iff {f g : LocalizationMap S N} : f = g ↔ ∀ x, f.toMap x = g.toMap x :=
   ⟨fun h x => h ▸ rfl, ext⟩
 #align submonoid.localization_map.ext_iff Submonoid.LocalizationMap.ext_iff
 #align add_submonoid.localization_map.ext_iff AddSubmonoid.LocalizationMap.ext_iff
 
-/- warning: submonoid.localization_map.to_map_injective -> Submonoid.LocalizationMap.toMap_injective is a dubious translation:
-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], Function.Injective.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2)
-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], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.to_map_injective Submonoid.LocalizationMap.toMap_injectiveₓ'. -/
 @[to_additive]
 theorem toMap_injective : Function.Injective (@LocalizationMap.toMap _ _ S N _) := fun _ _ h =>
   ext <| MonoidHom.ext_iff.1 h
 #align submonoid.localization_map.to_map_injective Submonoid.LocalizationMap.toMap_injective
 #align add_submonoid.localization_map.to_map_injective AddSubmonoid.LocalizationMap.toMap_injective
 
-/- warning: submonoid.localization_map.map_units -> Submonoid.LocalizationMap.map_units is a dubious translation:
-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) (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))
-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) (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_units Submonoid.LocalizationMap.map_unitsₓ'. -/
 @[to_additive]
 theorem map_units (f : LocalizationMap S N) (y : S) : IsUnit (f.toMap y) :=
   f.2 y
 #align submonoid.localization_map.map_units Submonoid.LocalizationMap.map_units
 #align add_submonoid.localization_map.map_add_units AddSubmonoid.LocalizationMap.map_addUnits
 
-/- warning: submonoid.localization_map.surj -> Submonoid.LocalizationMap.surj is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.surj Submonoid.LocalizationMap.surjₓ'. -/
 @[to_additive]
 theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2 = f.toMap x.1 :=
   f.3 z
 #align submonoid.localization_map.surj Submonoid.LocalizationMap.surj
 #align add_submonoid.localization_map.surj AddSubmonoid.LocalizationMap.surj
 
-/- warning: submonoid.localization_map.eq_iff_exists -> Submonoid.LocalizationMap.eq_iff_exists is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_iff_exists Submonoid.LocalizationMap.eq_iff_existsₓ'. -/
 @[to_additive]
 theorem eq_iff_exists (f : LocalizationMap S N) {x y} :
     f.toMap x = f.toMap y ↔ ∃ c : S, ↑c * x = c * y :=
@@ -753,12 +588,6 @@ theorem eq_iff_exists (f : LocalizationMap S N) {x y} :
 #align submonoid.localization_map.eq_iff_exists Submonoid.LocalizationMap.eq_iff_exists
 #align add_submonoid.localization_map.eq_iff_exists AddSubmonoid.LocalizationMap.eq_iff_exists
 
-/- warning: submonoid.localization_map.sec -> Submonoid.LocalizationMap.sec is a dubious translation:
-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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> N -> (Prod.{u1, u1} M (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))
-but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> N -> (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec Submonoid.LocalizationMap.secₓ'. -/
 /-- Given a localization map `f : M →* N`, a section function sending `z : N` to some
 `(x, y) : M × S` such that `f x * (f y)⁻¹ = z`. -/
 @[to_additive
@@ -768,12 +597,6 @@ noncomputable def sec (f : LocalizationMap S N) (z : N) : M × S :=
 #align submonoid.localization_map.sec Submonoid.LocalizationMap.sec
 #align add_submonoid.localization_map.sec AddSubmonoid.LocalizationMap.sec
 
-/- warning: submonoid.localization_map.sec_spec -> Submonoid.LocalizationMap.sec_spec is a dubious translation:
-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} (z : N), Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
-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} (z : N), Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_spec Submonoid.LocalizationMap.sec_specₓ'. -/
 @[to_additive]
 theorem sec_spec {f : LocalizationMap S N} (z : N) :
     z * f.toMap (f.sec z).2 = f.toMap (f.sec z).1 :=
@@ -781,18 +604,12 @@ theorem sec_spec {f : LocalizationMap S N} (z : N) :
 #align submonoid.localization_map.sec_spec Submonoid.LocalizationMap.sec_spec
 #align add_submonoid.localization_map.sec_spec AddSubmonoid.LocalizationMap.sec_spec
 
-/- warning: submonoid.localization_map.sec_spec' -> Submonoid.LocalizationMap.sec_spec' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_spec' Submonoid.LocalizationMap.sec_spec'ₓ'. -/
 @[to_additive]
 theorem sec_spec' {f : LocalizationMap S N} (z : N) :
     f.toMap (f.sec z).1 = f.toMap (f.sec z).2 * z := by rw [mul_comm, sec_spec]
 #align submonoid.localization_map.sec_spec' Submonoid.LocalizationMap.sec_spec'
 #align add_submonoid.localization_map.sec_spec' AddSubmonoid.LocalizationMap.sec_spec'
 
-/- warning: submonoid.localization_map.mul_inv_left -> Submonoid.LocalizationMap.mul_inv_left is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_left Submonoid.LocalizationMap.mul_inv_leftₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `w * (f y)⁻¹ = z ↔ w = f y * z`. -/
 @[to_additive
@@ -804,9 +621,6 @@ theorem mul_inv_left {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 #align submonoid.localization_map.mul_inv_left Submonoid.LocalizationMap.mul_inv_left
 #align add_submonoid.localization_map.add_neg_left AddSubmonoid.LocalizationMap.add_neg_left
 
-/- warning: submonoid.localization_map.mul_inv_right -> Submonoid.LocalizationMap.mul_inv_right is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_right Submonoid.LocalizationMap.mul_inv_rightₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `z = w * (f y)⁻¹ ↔ z * f y = w`. -/
 @[to_additive
@@ -817,9 +631,6 @@ theorem mul_inv_right {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 #align submonoid.localization_map.mul_inv_right Submonoid.LocalizationMap.mul_inv_right
 #align add_submonoid.localization_map.add_neg_right AddSubmonoid.LocalizationMap.add_neg_right
 
-/- warning: submonoid.localization_map.mul_inv -> Submonoid.LocalizationMap.mul_inv is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv Submonoid.LocalizationMap.mul_invₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that
 `f(S) ⊆ Nˣ`, for all `x₁ x₂ : M` and `y₁, y₂ ∈ S`, we have
 `f x₁ * (f y₁)⁻¹ = f x₂ * (f y₂)⁻¹ ↔ f (x₁ * y₂) = f (x₂ * y₁)`. -/
@@ -836,9 +647,6 @@ theorem mul_inv {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {x₁ x₂} {y₁ y
 #align submonoid.localization_map.mul_inv Submonoid.LocalizationMap.mul_inv
 #align add_submonoid.localization_map.add_neg AddSubmonoid.LocalizationMap.add_neg
 
-/- warning: submonoid.localization_map.inv_inj -> Submonoid.LocalizationMap.inv_inj is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_inj Submonoid.LocalizationMap.inv_injₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y, z ∈ S`, we have `(f y)⁻¹ = (f z)⁻¹ → f y = f z`. -/
 @[to_additive
@@ -851,9 +659,6 @@ theorem inv_inj {f : M →* N} (hf : ∀ y : S, IsUnit (f y)) {y z}
 #align submonoid.localization_map.inv_inj Submonoid.LocalizationMap.inv_inj
 #align add_submonoid.localization_map.neg_inj AddSubmonoid.LocalizationMap.neg_inj
 
-/- warning: submonoid.localization_map.inv_unique -> Submonoid.LocalizationMap.inv_unique is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_unique Submonoid.LocalizationMap.inv_uniqueₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y ∈ S`, `(f y)⁻¹` is unique. -/
 @[to_additive
@@ -865,9 +670,6 @@ theorem inv_unique {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {y : S} {z} (H :
 
 variable (f : LocalizationMap S N)
 
-/- warning: submonoid.localization_map.map_right_cancel -> Submonoid.LocalizationMap.map_right_cancel is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancelₓ'. -/
 @[to_additive]
 theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
     f.toMap x = f.toMap y :=
@@ -879,9 +681,6 @@ theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
 #align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancel
 #align add_submonoid.localization_map.map_right_cancel AddSubmonoid.LocalizationMap.map_right_cancel
 
-/- warning: submonoid.localization_map.map_left_cancel -> Submonoid.LocalizationMap.map_left_cancel is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_left_cancel Submonoid.LocalizationMap.map_left_cancelₓ'. -/
 @[to_additive]
 theorem map_left_cancel {x y} {c : S} (h : f.toMap (x * c) = f.toMap (y * c)) :
     f.toMap x = f.toMap y :=
@@ -889,12 +688,6 @@ theorem map_left_cancel {x y} {c : S} (h : f.toMap (x * c) = f.toMap (y * c)) :
 #align submonoid.localization_map.map_left_cancel Submonoid.LocalizationMap.map_left_cancel
 #align add_submonoid.localization_map.map_left_cancel AddSubmonoid.LocalizationMap.map_left_cancel
 
-/- warning: submonoid.localization_map.mk' -> Submonoid.LocalizationMap.mk' is a dubious translation:
-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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> M -> (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) -> N
-but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> N
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk' Submonoid.LocalizationMap.mk'ₓ'. -/
 /-- Given a localization map `f : M →* N`, the surjection sending `(x, y) : M × S` to
 `f x * (f y)⁻¹`. -/
 @[to_additive
@@ -904,9 +697,6 @@ noncomputable def mk' (f : LocalizationMap S N) (x : M) (y : S) : N :=
 #align submonoid.localization_map.mk' Submonoid.LocalizationMap.mk'
 #align add_submonoid.localization_map.mk' AddSubmonoid.LocalizationMap.mk'
 
-/- warning: submonoid.localization_map.mk'_mul -> Submonoid.LocalizationMap.mk'_mul is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul Submonoid.LocalizationMap.mk'_mulₓ'. -/
 @[to_additive]
 theorem mk'_mul (x₁ x₂ : M) (y₁ y₂ : S) : f.mk' (x₁ * x₂) (y₁ * y₂) = f.mk' x₁ y₁ * f.mk' x₂ y₂ :=
   (mul_inv_left f.map_units _ _ _).2 <|
@@ -918,12 +708,6 @@ theorem mk'_mul (x₁ x₂ : M) (y₁ y₂ : S) : f.mk' (x₁ * x₂) (y₁ * y
 #align submonoid.localization_map.mk'_mul Submonoid.LocalizationMap.mk'_mul
 #align add_submonoid.localization_map.mk'_add AddSubmonoid.LocalizationMap.mk'_add
 
-/- warning: submonoid.localization_map.mk'_one -> Submonoid.LocalizationMap.mk'_one is a dubious translation:
-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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
-but is expected to have type
-  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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_one Submonoid.LocalizationMap.mk'_oneₓ'. -/
 @[to_additive]
 theorem mk'_one (x) : f.mk' x (1 : S) = f.toMap x := by
   rw [mk', MonoidHom.map_one] <;> exact mul_one _
@@ -942,62 +726,35 @@ theorem mk'_sec (z : N) : f.mk' (f.sec z).1 (f.sec z).2 = z :=
 #align add_submonoid.localization_map.mk'_sec AddSubmonoid.LocalizationMap.mk'_sec
 -/
 
-/- warning: submonoid.localization_map.mk'_surjective -> Submonoid.LocalizationMap.mk'_surjective is a dubious translation:
-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) (z : N), Exists.{succ u1} M (fun (x : M) => Exists.{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) (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) => Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y) z))
-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) (z : N), Exists.{succ u2} M (fun (x : M) => Exists.{succ u2} (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)) (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)) => Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) z))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_surjective Submonoid.LocalizationMap.mk'_surjectiveₓ'. -/
 @[to_additive]
 theorem mk'_surjective (z : N) : ∃ (x : _)(y : S), f.mk' x y = z :=
   ⟨(f.sec z).1, (f.sec z).2, f.mk'_sec z⟩
 #align submonoid.localization_map.mk'_surjective Submonoid.LocalizationMap.mk'_surjective
 #align add_submonoid.localization_map.mk'_surjective AddSubmonoid.LocalizationMap.mk'_surjective
 
-/- warning: submonoid.localization_map.mk'_spec -> Submonoid.LocalizationMap.mk'_spec is a dubious translation:
-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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_spec Submonoid.LocalizationMap.mk'_specₓ'. -/
 @[to_additive]
 theorem mk'_spec (x) (y : S) : f.mk' x y * f.toMap y = f.toMap x :=
   show _ * _ * _ = _ by rw [mul_assoc, mul_comm _ (f.to_map y), ← mul_assoc, mul_inv_left, mul_comm]
 #align submonoid.localization_map.mk'_spec Submonoid.LocalizationMap.mk'_spec
 #align add_submonoid.localization_map.mk'_spec AddSubmonoid.LocalizationMap.mk'_spec
 
-/- warning: submonoid.localization_map.mk'_spec' -> Submonoid.LocalizationMap.mk'_spec' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_spec' Submonoid.LocalizationMap.mk'_spec'ₓ'. -/
 @[to_additive]
 theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_comm, mk'_spec]
 #align submonoid.localization_map.mk'_spec' Submonoid.LocalizationMap.mk'_spec'
 #align add_submonoid.localization_map.mk'_spec' AddSubmonoid.LocalizationMap.mk'_spec'
 
-/- warning: submonoid.localization_map.eq_mk'_iff_mul_eq -> Submonoid.LocalizationMap.eq_mk'_iff_mul_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_mk'_iff_mul_eq Submonoid.LocalizationMap.eq_mk'_iff_mul_eqₓ'. -/
 @[to_additive]
 theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.toMap x :=
   ⟨fun H => by rw [H, mk'_spec], fun H => by erw [mul_inv_right, H] <;> rfl⟩
 #align submonoid.localization_map.eq_mk'_iff_mul_eq Submonoid.LocalizationMap.eq_mk'_iff_mul_eq
 #align add_submonoid.localization_map.eq_mk'_iff_add_eq AddSubmonoid.LocalizationMap.eq_mk'_iff_add_eq
 
-/- warning: submonoid.localization_map.mk'_eq_iff_eq_mul -> Submonoid.LocalizationMap.mk'_eq_iff_eq_mul is a dubious translation:
-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) {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} {z : N}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))
-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) {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)} {z : N}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq_mul Submonoid.LocalizationMap.mk'_eq_iff_eq_mulₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.toMap y := by
   rw [eq_comm, eq_mk'_iff_mul_eq, eq_comm]
 #align submonoid.localization_map.mk'_eq_iff_eq_mul Submonoid.LocalizationMap.mk'_eq_iff_eq_mul
 #align add_submonoid.localization_map.mk'_eq_iff_eq_add AddSubmonoid.LocalizationMap.mk'_eq_iff_eq_add
 
-/- warning: submonoid.localization_map.mk'_eq_iff_eq -> Submonoid.LocalizationMap.mk'_eq_iff_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq Submonoid.LocalizationMap.mk'_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
     f.mk' x₁ y₁ = f.mk' x₂ y₂ ↔ f.toMap (y₂ * x₁) = f.toMap (y₁ * x₂) :=
@@ -1011,9 +768,6 @@ theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
 #align submonoid.localization_map.mk'_eq_iff_eq Submonoid.LocalizationMap.mk'_eq_iff_eq
 #align add_submonoid.localization_map.mk'_eq_iff_eq AddSubmonoid.LocalizationMap.mk'_eq_iff_eq
 
-/- warning: submonoid.localization_map.mk'_eq_iff_eq' -> Submonoid.LocalizationMap.mk'_eq_iff_eq' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq' Submonoid.LocalizationMap.mk'_eq_iff_eq'ₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq' {x₁ x₂} {y₁ y₂ : S} :
     f.mk' x₁ y₁ = f.mk' x₂ y₂ ↔ f.toMap (x₁ * y₂) = f.toMap (x₂ * y₁) := by
@@ -1021,9 +775,6 @@ theorem mk'_eq_iff_eq' {x₁ x₂} {y₁ y₂ : S} :
 #align submonoid.localization_map.mk'_eq_iff_eq' Submonoid.LocalizationMap.mk'_eq_iff_eq'
 #align add_submonoid.localization_map.mk'_eq_iff_eq' AddSubmonoid.LocalizationMap.mk'_eq_iff_eq'
 
-/- warning: submonoid.localization_map.eq -> Submonoid.LocalizationMap.eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq Submonoid.LocalizationMap.eqₓ'. -/
 @[to_additive]
 protected theorem eq {a₁ b₁} {a₂ b₂ : S} :
     f.mk' a₁ a₂ = f.mk' b₁ b₂ ↔ ∃ c : S, ↑c * (↑b₂ * a₁) = c * (a₂ * b₁) :=
@@ -1031,9 +782,6 @@ protected theorem eq {a₁ b₁} {a₂ b₂ : S} :
 #align submonoid.localization_map.eq Submonoid.LocalizationMap.eq
 #align add_submonoid.localization_map.eq AddSubmonoid.LocalizationMap.eq
 
-/- warning: submonoid.localization_map.eq' -> Submonoid.LocalizationMap.eq' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq' Submonoid.LocalizationMap.eq'ₓ'. -/
 @[to_additive]
 protected theorem eq' {a₁ b₁} {a₂ b₂ : S} :
     f.mk' a₁ a₂ = f.mk' b₁ b₂ ↔ Localization.r S (a₁, a₂) (b₁, b₂) := by
@@ -1041,24 +789,12 @@ protected theorem eq' {a₁ b₁} {a₂ b₂ : S} :
 #align submonoid.localization_map.eq' Submonoid.LocalizationMap.eq'
 #align add_submonoid.localization_map.eq' AddSubmonoid.LocalizationMap.eq'
 
-/- warning: submonoid.localization_map.eq_iff_eq -> Submonoid.LocalizationMap.eq_iff_eq is a dubious translation:
-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) (g : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 g) x) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 g) y))
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) y))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_iff_eq Submonoid.LocalizationMap.eq_iff_eqₓ'. -/
 @[to_additive]
 theorem eq_iff_eq (g : LocalizationMap S P) {x y} : f.toMap x = f.toMap y ↔ g.toMap x = g.toMap y :=
   f.eq_iff_exists.trans g.eq_iff_exists.symm
 #align submonoid.localization_map.eq_iff_eq Submonoid.LocalizationMap.eq_iff_eq
 #align add_submonoid.localization_map.eq_iff_eq AddSubmonoid.LocalizationMap.eq_iff_eq
 
-/- warning: submonoid.localization_map.mk'_eq_iff_mk'_eq -> Submonoid.LocalizationMap.mk'_eq_iff_mk'_eq is a dubious translation:
-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) (g : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3) {x₁ : M} {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} {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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u3} P (Submonoid.LocalizationMap.mk'.{u1, u3} M _inst_1 S P _inst_3 g x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u3} M _inst_1 S P _inst_3 g x₂ y₂))
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3) {x₁ : M} {x₂ : M} {y₁ : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)} {y₂ : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u2} P (Submonoid.LocalizationMap.mk'.{u3, u2} M _inst_1 S P _inst_3 g x₁ y₁) (Submonoid.LocalizationMap.mk'.{u3, u2} M _inst_1 S P _inst_3 g x₂ y₂))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_mk'_eq Submonoid.LocalizationMap.mk'_eq_iff_mk'_eqₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_mk'_eq (g : LocalizationMap S P) {x₁ x₂} {y₁ y₂ : S} :
     f.mk' x₁ y₁ = f.mk' x₂ y₂ ↔ g.mk' x₁ y₁ = g.mk' x₂ y₂ :=
@@ -1066,9 +802,6 @@ theorem mk'_eq_iff_mk'_eq (g : LocalizationMap S P) {x₁ x₂} {y₁ y₂ : S}
 #align submonoid.localization_map.mk'_eq_iff_mk'_eq Submonoid.LocalizationMap.mk'_eq_iff_mk'_eq
 #align add_submonoid.localization_map.mk'_eq_iff_mk'_eq AddSubmonoid.LocalizationMap.mk'_eq_iff_mk'_eq
 
-/- warning: submonoid.localization_map.exists_of_sec_mk' -> Submonoid.LocalizationMap.exists_of_sec_mk' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.exists_of_sec_mk' Submonoid.LocalizationMap.exists_of_sec_mk'ₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, for all `x₁ : M` and `y₁ ∈ S`,
 if `x₂ : M, y₂ ∈ S` are such that `f x₁ * (f y₁)⁻¹ * f y₂ = f x₂`, then there exists `c ∈ S`
 such that `x₁ * y₂ * c = x₂ * y₁ * c`. -/
@@ -1080,9 +813,6 @@ theorem exists_of_sec_mk' (x) (y : S) :
 #align submonoid.localization_map.exists_of_sec_mk' Submonoid.LocalizationMap.exists_of_sec_mk'
 #align add_submonoid.localization_map.exists_of_sec_mk' AddSubmonoid.LocalizationMap.exists_of_sec_mk'
 
-/- warning: submonoid.localization_map.mk'_eq_of_eq -> Submonoid.LocalizationMap.mk'_eq_of_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_of_eq Submonoid.LocalizationMap.mk'_eq_of_eqₓ'. -/
 @[to_additive]
 theorem mk'_eq_of_eq {a₁ b₁ : M} {a₂ b₂ : S} (H : ↑a₂ * b₁ = ↑b₂ * a₁) :
     f.mk' a₁ a₂ = f.mk' b₁ b₂ :=
@@ -1090,9 +820,6 @@ theorem mk'_eq_of_eq {a₁ b₁ : M} {a₂ b₂ : S} (H : ↑a₂ * b₁ = ↑b
 #align submonoid.localization_map.mk'_eq_of_eq Submonoid.LocalizationMap.mk'_eq_of_eq
 #align add_submonoid.localization_map.mk'_eq_of_eq AddSubmonoid.LocalizationMap.mk'_eq_of_eq
 
-/- warning: submonoid.localization_map.mk'_eq_of_eq' -> Submonoid.LocalizationMap.mk'_eq_of_eq' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_of_eq' Submonoid.LocalizationMap.mk'_eq_of_eq'ₓ'. -/
 @[to_additive]
 theorem mk'_eq_of_eq' {a₁ b₁ : M} {a₂ b₂ : S} (H : b₁ * ↑a₂ = a₁ * ↑b₂) :
     f.mk' a₁ a₂ = f.mk' b₁ b₂ :=
@@ -1100,92 +827,47 @@ theorem mk'_eq_of_eq' {a₁ b₁ : M} {a₂ b₂ : S} (H : b₁ * ↑a₂ = a₁
 #align submonoid.localization_map.mk'_eq_of_eq' Submonoid.LocalizationMap.mk'_eq_of_eq'
 #align add_submonoid.localization_map.mk'_eq_of_eq' AddSubmonoid.LocalizationMap.mk'_eq_of_eq'
 
-/- warning: submonoid.localization_map.mk'_self' -> Submonoid.LocalizationMap.mk'_self' is a dubious translation:
-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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f ((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) y) (OfNat.ofNat.{u2} N 1 (OfNat.mk.{u2} N 1 (One.one.{u2} N (MulOneClass.toHasOne.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))
-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) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (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) y) (OfNat.ofNat.{u1} N 1 (One.toOfNat1.{u1} N (Monoid.toOne.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_self' Submonoid.LocalizationMap.mk'_self'ₓ'. -/
 @[simp, to_additive]
 theorem mk'_self' (y : S) : f.mk' (y : M) y = 1 :=
   show _ * _ = _ by rw [mul_inv_left, mul_one]
 #align submonoid.localization_map.mk'_self' Submonoid.LocalizationMap.mk'_self'
 #align add_submonoid.localization_map.mk'_self' AddSubmonoid.LocalizationMap.mk'_self'
 
-/- warning: submonoid.localization_map.mk'_self -> Submonoid.LocalizationMap.mk'_self is a dubious translation:
-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) (x : M) (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), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (Subtype.mk.{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) x H)) (OfNat.ofNat.{u2} N 1 (OfNat.mk.{u2} N 1 (One.one.{u2} N (MulOneClass.toHasOne.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))
-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) (x : M) (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), Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x (Subtype.mk.{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) x H)) (OfNat.ofNat.{u1} N 1 (One.toOfNat1.{u1} N (Monoid.toOne.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_self Submonoid.LocalizationMap.mk'_selfₓ'. -/
 @[simp, to_additive]
 theorem mk'_self (x) (H : x ∈ S) : f.mk' x ⟨x, H⟩ = 1 := by convert mk'_self' _ _ <;> rfl
 #align submonoid.localization_map.mk'_self Submonoid.LocalizationMap.mk'_self
 #align add_submonoid.localization_map.mk'_self AddSubmonoid.LocalizationMap.mk'_self
 
-/- warning: submonoid.localization_map.mul_mk'_eq_mk'_of_mul -> Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mul is a dubious translation:
-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) (x₁ : M) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ x₂) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (x₁ : M) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_mk'_eq_mk'_of_mul Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mulₓ'. -/
 @[to_additive]
 theorem mul_mk'_eq_mk'_of_mul (x₁ x₂) (y : S) : f.toMap x₁ * f.mk' x₂ y = f.mk' (x₁ * x₂) y := by
   rw [← mk'_one, ← mk'_mul, one_mul]
 #align submonoid.localization_map.mul_mk'_eq_mk'_of_mul Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mul
 #align add_submonoid.localization_map.add_mk'_eq_mk'_of_add AddSubmonoid.LocalizationMap.add_mk'_eq_mk'_of_add
 
-/- warning: submonoid.localization_map.mk'_mul_eq_mk'_of_mul -> Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mul is a dubious translation:
-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) (x₁ : M) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ x₂) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (x₁ : M) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_eq_mk'_of_mul Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mulₓ'. -/
 @[to_additive]
 theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁ = f.mk' (x₁ * x₂) y := by
   rw [mul_comm, mul_mk'_eq_mk'_of_mul]
 #align submonoid.localization_map.mk'_mul_eq_mk'_of_mul Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mul
 #align add_submonoid.localization_map.mk'_add_eq_mk'_of_add AddSubmonoid.LocalizationMap.mk'_add_eq_mk'_of_add
 
-/- warning: submonoid.localization_map.mul_mk'_one_eq_mk' -> Submonoid.LocalizationMap.mul_mk'_one_eq_mk' is a dubious translation:
-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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u1} M 1 (OfNat.mk.{u1} M 1 (One.one.{u1} M (MulOneClass.toHasOne.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M (Monoid.toOne.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_mk'_one_eq_mk' Submonoid.LocalizationMap.mul_mk'_one_eq_mk'ₓ'. -/
 @[to_additive]
 theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
   rw [mul_mk'_eq_mk'_of_mul, mul_one]
 #align submonoid.localization_map.mul_mk'_one_eq_mk' Submonoid.LocalizationMap.mul_mk'_one_eq_mk'
 #align add_submonoid.localization_map.add_mk'_zero_eq_mk' AddSubmonoid.LocalizationMap.add_mk'_zero_eq_mk'
 
-/- warning: submonoid.localization_map.mk'_mul_cancel_right -> Submonoid.LocalizationMap.mk'_mul_cancel_right is a dubious translation:
-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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x ((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)) y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_cancel_right Submonoid.LocalizationMap.mk'_mul_cancel_rightₓ'. -/
 @[simp, to_additive]
 theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
   rw [← mul_mk'_one_eq_mk', f.to_map.map_mul, mul_assoc, mul_mk'_one_eq_mk', mk'_self', mul_one]
 #align submonoid.localization_map.mk'_mul_cancel_right Submonoid.LocalizationMap.mk'_mul_cancel_right
 #align add_submonoid.localization_map.mk'_add_cancel_right AddSubmonoid.LocalizationMap.mk'_add_cancel_right
 
-/- warning: submonoid.localization_map.mk'_mul_cancel_left -> Submonoid.LocalizationMap.mk'_mul_cancel_left is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_cancel_left Submonoid.LocalizationMap.mk'_mul_cancel_leftₓ'. -/
 @[to_additive]
 theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := by
   rw [mul_comm, mk'_mul_cancel_right]
 #align submonoid.localization_map.mk'_mul_cancel_left Submonoid.LocalizationMap.mk'_mul_cancel_left
 #align add_submonoid.localization_map.mk'_add_cancel_left AddSubmonoid.LocalizationMap.mk'_add_cancel_left
 
-/- warning: submonoid.localization_map.is_unit_comp -> Submonoid.LocalizationMap.isUnit_comp is a dubious translation:
-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) (j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (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), IsUnit.{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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) ((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))
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) (j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.is_unit_comp Submonoid.LocalizationMap.isUnit_compₓ'. -/
 @[to_additive]
 theorem isUnit_comp (j : N →* P) (y : S) : IsUnit (j.comp f.toMap y) :=
   ⟨Units.map j <| IsUnit.liftRight (f.toMap.restrict S) f.map_units y,
@@ -1195,9 +877,6 @@ theorem isUnit_comp (j : N →* P) (y : S) : IsUnit (j.comp f.toMap y) :=
 
 variable {g : M →* P}
 
-/- warning: submonoid.localization_map.eq_of_eq -> Submonoid.LocalizationMap.eq_of_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_of_eq Submonoid.LocalizationMap.eq_of_eqₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g(S) ⊆ units P`, `f x = f y → g x = g y` for all `x y : M`. -/
 @[to_additive
@@ -1211,9 +890,6 @@ theorem eq_of_eq (hg : ∀ y : S, IsUnit (g y)) {x y} (h : f.toMap x = f.toMap y
 #align submonoid.localization_map.eq_of_eq Submonoid.LocalizationMap.eq_of_eq
 #align add_submonoid.localization_map.eq_of_eq AddSubmonoid.LocalizationMap.eq_of_eq
 
-/- warning: submonoid.localization_map.comp_eq_of_eq -> Submonoid.LocalizationMap.comp_eq_of_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.comp_eq_of_eq Submonoid.LocalizationMap.comp_eq_of_eqₓ'. -/
 /-- Given `comm_monoid`s `M, P`, localization maps `f : M →* N, k : P →* Q` for submonoids
 `S, T` respectively, and `g : M →* P` such that `g(S) ⊆ T`, `f x = f y` implies
 `k (g x) = k (g y)`. -/
@@ -1227,12 +903,6 @@ theorem comp_eq_of_eq {T : Submonoid P} {Q : Type _} [CommMonoid Q] (hg : ∀ y
 
 variable (hg : ∀ y : S, IsUnit (g y))
 
-/- warning: submonoid.localization_map.lift -> Submonoid.LocalizationMap.lift is a dubious translation:
-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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (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), IsUnit.{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))) g ((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))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
-but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift Submonoid.LocalizationMap.liftₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
 `N` to `P` sending `z : N` to `g x * (g y)⁻¹`, where `(x, y) : M × S` are such that
@@ -1254,9 +924,6 @@ noncomputable def lift : N →* P
 
 variable {S g}
 
-/- warning: submonoid.localization_map.lift_mk' -> Submonoid.LocalizationMap.lift_mk' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk' Submonoid.LocalizationMap.lift_mk'ₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
 `N` to `P` maps `f x * (f y)⁻¹` to `g x * (g y)⁻¹` for all `x : M, y ∈ S`. -/
@@ -1269,9 +936,6 @@ theorem lift_mk' (x y) : f.lift hg (f.mk' x y) = g x * ↑(IsUnit.liftRight (g.r
 #align submonoid.localization_map.lift_mk' Submonoid.LocalizationMap.lift_mk'
 #align add_submonoid.localization_map.lift_mk' AddSubmonoid.LocalizationMap.lift_mk'
 
-/- warning: submonoid.localization_map.lift_spec -> Submonoid.LocalizationMap.lift_spec is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec Submonoid.LocalizationMap.lift_specₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v : P`, we have
 `f.lift hg z = v ↔ g x = g y * v`, where `x : M, y ∈ S` are such that `z * f y = f x`. -/
@@ -1282,9 +946,6 @@ theorem lift_spec (z v) : f.lift hg z = v ↔ g (f.sec z).1 = g (f.sec z).2 * v
 #align submonoid.localization_map.lift_spec Submonoid.LocalizationMap.lift_spec
 #align add_submonoid.localization_map.lift_spec AddSubmonoid.LocalizationMap.lift_spec
 
-/- warning: submonoid.localization_map.lift_spec_mul -> Submonoid.LocalizationMap.lift_spec_mul is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec_mul Submonoid.LocalizationMap.lift_spec_mulₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v w : P`, we have
 `f.lift hg z * w = v ↔ g x * w = g y * v`, where `x : M, y ∈ S` are such that
@@ -1299,18 +960,12 @@ theorem lift_spec_mul (z w v) : f.lift hg z * w = v ↔ g (f.sec z).1 * w = g (f
 #align submonoid.localization_map.lift_spec_mul Submonoid.LocalizationMap.lift_spec_mul
 #align add_submonoid.localization_map.lift_spec_add AddSubmonoid.LocalizationMap.lift_spec_add
 
-/- warning: submonoid.localization_map.lift_mk'_spec -> Submonoid.LocalizationMap.lift_mk'_spec is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk'_spec Submonoid.LocalizationMap.lift_mk'_specₓ'. -/
 @[to_additive]
 theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y * v := by
   rw [f.lift_mk' hg] <;> exact mul_inv_left hg _ _ _
 #align submonoid.localization_map.lift_mk'_spec Submonoid.LocalizationMap.lift_mk'_spec
 #align add_submonoid.localization_map.lift_mk'_spec AddSubmonoid.LocalizationMap.lift_mk'_spec
 
-/- warning: submonoid.localization_map.lift_mul_right -> Submonoid.LocalizationMap.lift_mul_right is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_right Submonoid.LocalizationMap.lift_mul_rightₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
 `f.lift hg z * g y = g x`, where `x : M, y ∈ S` are such that `z * f y = f x`. -/
@@ -1321,9 +976,6 @@ theorem lift_mul_right (z) : f.lift hg z * g (f.sec z).2 = g (f.sec z).1 :=
 #align submonoid.localization_map.lift_mul_right Submonoid.LocalizationMap.lift_mul_right
 #align add_submonoid.localization_map.lift_add_right AddSubmonoid.LocalizationMap.lift_add_right
 
-/- warning: submonoid.localization_map.lift_mul_left -> Submonoid.LocalizationMap.lift_mul_left is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_left Submonoid.LocalizationMap.lift_mul_leftₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
 `g y * f.lift hg z = g x`, where `x : M, y ∈ S` are such that `z * f y = f x`. -/
@@ -1334,18 +986,12 @@ theorem lift_mul_left (z) : g (f.sec z).2 * f.lift hg z = g (f.sec z).1 := by
 #align submonoid.localization_map.lift_mul_left Submonoid.LocalizationMap.lift_mul_left
 #align add_submonoid.localization_map.lift_add_left AddSubmonoid.LocalizationMap.lift_add_left
 
-/- warning: submonoid.localization_map.lift_eq -> Submonoid.LocalizationMap.lift_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq Submonoid.LocalizationMap.lift_eqₓ'. -/
 @[simp, to_additive]
 theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
   rw [lift_spec, ← g.map_mul] <;> exact f.eq_of_eq hg (by rw [sec_spec', f.to_map.map_mul])
 #align submonoid.localization_map.lift_eq Submonoid.LocalizationMap.lift_eq
 #align add_submonoid.localization_map.lift_eq AddSubmonoid.LocalizationMap.lift_eq
 
-/- warning: submonoid.localization_map.lift_eq_iff -> Submonoid.LocalizationMap.lift_eq_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq_iff Submonoid.LocalizationMap.lift_eq_iffₓ'. -/
 @[to_additive]
 theorem lift_eq_iff {x y : M × S} :
     f.lift hg (f.mk' x.1 x.2) = f.lift hg (f.mk' y.1 y.2) ↔ g (x.1 * y.2) = g (y.1 * x.2) := by
@@ -1353,23 +999,11 @@ theorem lift_eq_iff {x y : M × S} :
 #align submonoid.localization_map.lift_eq_iff Submonoid.LocalizationMap.lift_eq_iff
 #align add_submonoid.localization_map.lift_eq_iff AddSubmonoid.LocalizationMap.lift_eq_iff
 
-/- warning: submonoid.localization_map.lift_comp -> Submonoid.LocalizationMap.lift_comp is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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.{max (succ u3) (succ u1)} (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.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) g
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHom.comp.{u3, u1, u2} M N P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f)) g
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_comp Submonoid.LocalizationMap.lift_compₓ'. -/
 @[simp, to_additive]
 theorem lift_comp : (f.lift hg).comp f.toMap = g := by ext <;> exact f.lift_eq hg _
 #align submonoid.localization_map.lift_comp Submonoid.LocalizationMap.lift_comp
 #align add_submonoid.localization_map.lift_comp AddSubmonoid.LocalizationMap.lift_comp
 
-/- warning: submonoid.localization_map.lift_of_comp -> Submonoid.LocalizationMap.lift_of_comp is a dubious translation:
-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) (j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.isUnit_comp.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f j)) j
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) (j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.isUnit_comp.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f j)) j
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_of_comp Submonoid.LocalizationMap.lift_of_compₓ'. -/
 @[simp, to_additive]
 theorem lift_of_comp (j : N →* P) : f.lift (f.isUnit_comp j) = j :=
   by
@@ -1380,12 +1014,6 @@ theorem lift_of_comp (j : N →* P) : f.lift (f.isUnit_comp j) = j :=
 #align submonoid.localization_map.lift_of_comp Submonoid.LocalizationMap.lift_of_comp
 #align add_submonoid.localization_map.lift_of_comp AddSubmonoid.LocalizationMap.lift_of_comp
 
-/- warning: submonoid.localization_map.epic_of_localization_map -> Submonoid.LocalizationMap.epic_of_localizationMap is a dubious translation:
-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) {j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (a : M), Eq.{succ u3} P (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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) a) (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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) j k)
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (a : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) j k)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.epic_of_localization_map Submonoid.LocalizationMap.epic_of_localizationMapₓ'. -/
 @[to_additive]
 theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a = k.comp f.toMap a) :
     j = k := by
@@ -1394,9 +1022,6 @@ theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a =
 #align submonoid.localization_map.epic_of_localization_map Submonoid.LocalizationMap.epic_of_localizationMap
 #align add_submonoid.localization_map.epic_of_localization_map AddSubmonoid.LocalizationMap.epic_of_localizationMap
 
-/- warning: submonoid.localization_map.lift_unique -> Submonoid.LocalizationMap.lift_unique is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_unique Submonoid.LocalizationMap.lift_uniqueₓ'. -/
 @[to_additive]
 theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg = j :=
   by
@@ -1407,24 +1032,12 @@ theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg
 #align submonoid.localization_map.lift_unique Submonoid.LocalizationMap.lift_unique
 #align add_submonoid.localization_map.lift_unique AddSubmonoid.LocalizationMap.lift_unique
 
-/- warning: submonoid.localization_map.lift_id -> Submonoid.LocalizationMap.lift_id is a dubious translation:
-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) (x : N), Eq.{succ u2} N (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => N -> N) (MonoidHom.hasCoeToFun.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x) x
-but is expected to have type
-  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) (x : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => N) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u2, u1} M _inst_1 S N _inst_2 f)) x) x
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_id Submonoid.LocalizationMap.lift_idₓ'. -/
 @[simp, to_additive]
 theorem lift_id (x) : f.lift f.map_units x = x :=
   MonoidHom.ext_iff.1 (f.lift_of_comp <| MonoidHom.id N) x
 #align submonoid.localization_map.lift_id Submonoid.LocalizationMap.lift_id
 #align add_submonoid.localization_map.lift_id AddSubmonoid.LocalizationMap.lift_id
 
-/- warning: submonoid.localization_map.lift_left_inverse -> Submonoid.LocalizationMap.lift_left_inverse is a dubious translation:
-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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} (z : N), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S P _inst_3 k)) z)) z
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) z
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_left_inverse Submonoid.LocalizationMap.lift_left_inverseₓ'. -/
 /-- Given two localization maps `f : M →* N, k : M →* P` for a submonoid `S ⊆ M`,
 the hom from `P` to `N` induced by `f` is left inverse to the hom from `N` to `P`
 induced by `k`. -/
@@ -1451,9 +1064,6 @@ theorem lift_left_inverse {k : LocalizationMap S P} (z : N) :
 #align submonoid.localization_map.lift_left_inverse Submonoid.LocalizationMap.lift_left_inverse
 #align add_submonoid.localization_map.lift_left_inverse AddSubmonoid.LocalizationMap.lift_left_inverse
 
-/- warning: submonoid.localization_map.lift_surjective_iff -> Submonoid.LocalizationMap.lift_surjective_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_surjective_iff Submonoid.LocalizationMap.lift_surjective_iffₓ'. -/
 @[to_additive]
 theorem lift_surjective_iff :
     Function.Surjective (f.lift hg) ↔ ∀ v : P, ∃ x : M × S, v * g x.2 = g x.1 :=
@@ -1472,9 +1082,6 @@ theorem lift_surjective_iff :
 #align submonoid.localization_map.lift_surjective_iff Submonoid.LocalizationMap.lift_surjective_iff
 #align add_submonoid.localization_map.lift_surjective_iff AddSubmonoid.LocalizationMap.lift_surjective_iff
 
-/- warning: submonoid.localization_map.lift_injective_iff -> Submonoid.LocalizationMap.lift_injective_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_injective_iff Submonoid.LocalizationMap.lift_injective_iffₓ'. -/
 @[to_additive]
 theorem lift_injective_iff :
     Function.Injective (f.lift hg) ↔ ∀ x y, f.toMap x = f.toMap y ↔ g x = g y :=
@@ -1497,9 +1104,6 @@ theorem lift_injective_iff :
 variable {T : Submonoid P} (hy : ∀ y : S, g y ∈ T) {Q : Type _} [CommMonoid Q]
   (k : LocalizationMap T Q)
 
-/- warning: submonoid.localization_map.map -> Submonoid.LocalizationMap.map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map Submonoid.LocalizationMap.mapₓ'. -/
 /-- Given a `comm_monoid` homomorphism `g : M →* P` where for submonoids `S ⊆ M, T ⊆ P` we have
 `g(S) ⊆ T`, the induced monoid homomorphism from the localization of `M` at `S` to the
 localization of `P` at `T`: if `f : M →* N` and `k : P →* Q` are localization maps for `S` and
@@ -1514,27 +1118,18 @@ noncomputable def map : N →* Q :=
 
 variable {k}
 
-/- warning: submonoid.localization_map.map_eq -> Submonoid.LocalizationMap.map_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_eq Submonoid.LocalizationMap.map_eqₓ'. -/
 @[to_additive]
 theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
   f.liftEq (fun y => k.map_units ⟨g y, hy y⟩) x
 #align submonoid.localization_map.map_eq Submonoid.LocalizationMap.map_eq
 #align add_submonoid.localization_map.map_eq AddSubmonoid.LocalizationMap.map_eq
 
-/- warning: submonoid.localization_map.map_comp -> Submonoid.LocalizationMap.map_comp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp Submonoid.LocalizationMap.map_compₓ'. -/
 @[simp, to_additive]
 theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
   f.lift_comp fun y => k.map_units ⟨g y, hy y⟩
 #align submonoid.localization_map.map_comp Submonoid.LocalizationMap.map_comp
 #align add_submonoid.localization_map.map_comp AddSubmonoid.LocalizationMap.map_comp
 
-/- warning: submonoid.localization_map.map_mk' -> Submonoid.LocalizationMap.map_mk' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mk' Submonoid.LocalizationMap.map_mk'ₓ'. -/
 @[to_additive]
 theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y⟩ :=
   by
@@ -1545,9 +1140,6 @@ theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y
 #align submonoid.localization_map.map_mk' Submonoid.LocalizationMap.map_mk'
 #align add_submonoid.localization_map.map_mk' AddSubmonoid.LocalizationMap.map_mk'
 
-/- warning: submonoid.localization_map.map_spec -> Submonoid.LocalizationMap.map_spec is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_spec Submonoid.LocalizationMap.map_specₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
 `u : Q`, we have `f.map hy k z = u ↔ k (g x) = k (g y) * u` where `x : M, y ∈ S` are such that
@@ -1559,9 +1151,6 @@ theorem map_spec (z u) : f.map hy k z = u ↔ k.toMap (g (f.sec z).1) = k.toMap
 #align submonoid.localization_map.map_spec Submonoid.LocalizationMap.map_spec
 #align add_submonoid.localization_map.map_spec AddSubmonoid.LocalizationMap.map_spec
 
-/- warning: submonoid.localization_map.map_mul_right -> Submonoid.LocalizationMap.map_mul_right is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_right Submonoid.LocalizationMap.map_mul_rightₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
 we have `f.map hy k z * k (g y) = k (g x)` where `x : M, y ∈ S` are such that
@@ -1573,9 +1162,6 @@ theorem map_mul_right (z) : f.map hy k z * k.toMap (g (f.sec z).2) = k.toMap (g
 #align submonoid.localization_map.map_mul_right Submonoid.LocalizationMap.map_mul_right
 #align add_submonoid.localization_map.map_add_right AddSubmonoid.LocalizationMap.map_add_right
 
-/- warning: submonoid.localization_map.map_mul_left -> Submonoid.LocalizationMap.map_mul_left is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_left Submonoid.LocalizationMap.map_mul_leftₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
 we have `k (g y) * f.map hy k z = k (g x)` where `x : M, y ∈ S` are such that
@@ -1587,18 +1173,12 @@ theorem map_mul_left (z) : k.toMap (g (f.sec z).2) * f.map hy k z = k.toMap (g (
 #align submonoid.localization_map.map_mul_left Submonoid.LocalizationMap.map_mul_left
 #align add_submonoid.localization_map.map_add_left AddSubmonoid.LocalizationMap.map_add_left
 
-/- warning: submonoid.localization_map.map_id -> Submonoid.LocalizationMap.map_id is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_id Submonoid.LocalizationMap.map_idₓ'. -/
 @[simp, to_additive]
 theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f z = z :=
   f.lift_id z
 #align submonoid.localization_map.map_id Submonoid.LocalizationMap.map_id
 #align add_submonoid.localization_map.map_id AddSubmonoid.LocalizationMap.map_id
 
-/- warning: submonoid.localization_map.map_comp_map -> Submonoid.LocalizationMap.map_comp_map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp_map Submonoid.LocalizationMap.map_comp_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
 @[to_additive
@@ -1618,9 +1198,6 @@ theorem map_comp_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMono
 #align submonoid.localization_map.map_comp_map Submonoid.LocalizationMap.map_comp_map
 #align add_submonoid.localization_map.map_comp_map AddSubmonoid.LocalizationMap.map_comp_map
 
-/- warning: submonoid.localization_map.map_map -> Submonoid.LocalizationMap.map_map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_map Submonoid.LocalizationMap.map_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
 @[to_additive
@@ -1657,12 +1234,6 @@ noncomputable def AwayMap.invSelf : N :=
 #align submonoid.localization_map.away_map.inv_self Submonoid.LocalizationMap.AwayMap.invSelf
 -/
 
-/- warning: submonoid.localization_map.away_map.lift -> Submonoid.LocalizationMap.AwayMap.lift is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{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))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift Submonoid.LocalizationMap.AwayMap.liftₓ'. -/
 /-- Given `x : M`, a localization map `F : M →* N` away from `x`, and a map of `comm_monoid`s
 `g : M →* P` such that `g x` is invertible, the homomorphism induced from `N` to `P` sending
 `z : N` to `g y * (g x)⁻ⁿ`, where `y : M, n : ℕ` are such that `z = F y * (F x)⁻ⁿ`. -/
@@ -1674,31 +1245,16 @@ noncomputable def AwayMap.lift (hg : IsUnit (g x)) : N →* P :=
       exact IsUnit.pow n hg
 #align submonoid.localization_map.away_map.lift Submonoid.LocalizationMap.AwayMap.lift
 
-/- warning: submonoid.localization_map.away_map.lift_eq -> Submonoid.LocalizationMap.AwayMap.lift_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift_eq Submonoid.LocalizationMap.AwayMap.lift_eqₓ'. -/
 @[simp]
 theorem AwayMap.lift_eq (hg : IsUnit (g x)) (a : M) : F.lift x hg (F.toMap a) = g a :=
   lift_eq _ _ _
 #align submonoid.localization_map.away_map.lift_eq Submonoid.LocalizationMap.AwayMap.lift_eq
 
-/- warning: submonoid.localization_map.away_map.lift_comp -> Submonoid.LocalizationMap.AwayMap.lift_comp is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) (hg : IsUnit.{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))) g x)), Eq.{max (succ u3) (succ u1)} (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.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) N _inst_2 F)) g
-but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.comp.{u2, u1, u3} M N P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F)) g
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift_comp Submonoid.LocalizationMap.AwayMap.lift_compₓ'. -/
 @[simp]
 theorem AwayMap.lift_comp (hg : IsUnit (g x)) : (F.lift x hg).comp F.toMap = g :=
   lift_comp _ _
 #align submonoid.localization_map.away_map.lift_comp Submonoid.LocalizationMap.AwayMap.lift_comp
 
-/- warning: submonoid.localization_map.away_to_away_right -> Submonoid.LocalizationMap.awayToAwayRight is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (forall (y : M), (Submonoid.LocalizationMap.AwayMap.{u1, u3} M _inst_1 (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x y) P _inst_3) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (forall (y : M), (Submonoid.LocalizationMap.AwayMap.{u1, u3} M _inst_1 (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x y) P _inst_3) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_to_away_right Submonoid.LocalizationMap.awayToAwayRightₓ'. -/
 /-- Given `x y : M` and localization maps `F : M →* N, G : M →* P` away from `x` and `x * y`
 respectively, the homomorphism induced from `N` to `P`. -/
 noncomputable def awayToAwayRight (y : M) (G : AwayMap (x * y) P) : N →* P :=
@@ -1730,12 +1286,6 @@ noncomputable def AwayMap.negSelf : B :=
 #align add_submonoid.localization_map.away_map.neg_self AddSubmonoid.LocalizationMap.AwayMap.negSelf
 -/
 
-/- warning: add_submonoid.localization_map.away_map.lift -> AddSubmonoid.LocalizationMap.AwayMap.lift is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B], (AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) -> (forall {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))}, (IsAddUnit.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => A -> C) (AddMonoidHom.hasCoeToFun.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) g x)) -> (AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))
-but is expected to have type
-  forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B], (AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) -> (forall {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))}, (IsAddUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) (AddCommMonoid.toAddMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) _inst_6) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) _x) (AddHomClass.toFunLike.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u1} A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g x)) -> (AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))
-Case conversion may be inaccurate. Consider using '#align add_submonoid.localization_map.away_map.lift AddSubmonoid.LocalizationMap.AwayMap.liftₓ'. -/
 /-- Given `x : A`, a localization map `F : A →+ B` away from `x`, and a map of `add_comm_monoid`s
 `g : A →+ C` such that `g x` is invertible, the homomorphism induced from `B` to `C` sending
 `z : B` to `g y - n • g x`, where `y : A, n : ℕ` are such that `z = F y - n • F x`. -/
@@ -1749,31 +1299,16 @@ noncomputable def AwayMap.lift (hg : IsAddUnit (g x)) : B →+ C :=
       exact IsAddUnit.map (nsmulAddMonoidHom n : C →+ C) hg
 #align add_submonoid.localization_map.away_map.lift AddSubmonoid.LocalizationMap.AwayMap.lift
 
-/- warning: add_submonoid.localization_map.away_map.lift_eq -> AddSubmonoid.LocalizationMap.AwayMap.lift_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align add_submonoid.localization_map.away_map.lift_eq AddSubmonoid.LocalizationMap.AwayMap.lift_eqₓ'. -/
 @[simp]
 theorem AwayMap.lift_eq (hg : IsAddUnit (g x)) (a : A) : F.lift x hg (F.toMap a) = g a :=
   lift_eq _ _ _
 #align add_submonoid.localization_map.away_map.lift_eq AddSubmonoid.LocalizationMap.AwayMap.lift_eq
 
-/- warning: add_submonoid.localization_map.away_map.lift_comp -> AddSubmonoid.LocalizationMap.AwayMap.lift_comp is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => A -> C) (AddMonoidHom.hasCoeToFun.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) g x)), Eq.{max (succ u3) (succ u1)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHom.comp.{u1, u2, u3} A B C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (AddSubmonoid.LocalizationMap.toMap.{u1, u2} A _inst_4 (AddSubmonoid.multiples.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4) x) B _inst_5 F)) g
-but is expected to have type
-  forall {A : Type.{u2}} [_inst_4 : AddCommMonoid.{u2} A] (x : A) {B : Type.{u1}} [_inst_5 : AddCommMonoid.{u1} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u2, u1} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) (AddCommMonoid.toAddMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) _inst_6) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) _x) (AddHomClass.toFunLike.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g x)), Eq.{max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHom.comp.{u2, u1, u3} A B C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (AddSubmonoid.LocalizationMap.toMap.{u2, u1} A _inst_4 (AddSubmonoid.multiples.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4) x) B _inst_5 F)) g
-Case conversion may be inaccurate. Consider using '#align add_submonoid.localization_map.away_map.lift_comp AddSubmonoid.LocalizationMap.AwayMap.lift_compₓ'. -/
 @[simp]
 theorem AwayMap.lift_comp (hg : IsAddUnit (g x)) : (F.lift x hg).comp F.toMap = g :=
   lift_comp _ _
 #align add_submonoid.localization_map.away_map.lift_comp AddSubmonoid.LocalizationMap.AwayMap.lift_comp
 
-/- warning: add_submonoid.localization_map.away_to_away_right -> AddSubmonoid.LocalizationMap.awayToAwayRight is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B], (AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) -> (forall {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] (y : A), (AddSubmonoid.LocalizationMap.AwayMap.{u1, u3} A _inst_4 (HAdd.hAdd.{u1, u1, u1} A A A (instHAdd.{u1} A (AddZeroClass.toHasAdd.{u1} A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)))) x y) C _inst_6) -> (AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))
-but is expected to have type
-  forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B], (AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) -> (forall {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] (y : A), (AddSubmonoid.LocalizationMap.AwayMap.{u1, u3} A _inst_4 (HAdd.hAdd.{u1, u1, u1} A A A (instHAdd.{u1} A (AddZeroClass.toAdd.{u1} A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)))) x y) C _inst_6) -> (AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))
-Case conversion may be inaccurate. Consider using '#align add_submonoid.localization_map.away_to_away_right AddSubmonoid.LocalizationMap.awayToAwayRightₓ'. -/
 /-- Given `x y : A` and localization maps `F : A →+ B, G : A →+ C` away from `x` and `x + y`
 respectively, the homomorphism induced from `B` to `C`. -/
 noncomputable def awayToAwayRight (y : A) (G : AwayMap (x + y) C) : B →+ C :=
@@ -1796,12 +1331,6 @@ namespace LocalizationMap
 variable (f : S.LocalizationMap N) {g : M →* P} (hg : ∀ y : S, IsUnit (g y)) {T : Submonoid P}
   {Q : Type _} [CommMonoid Q]
 
-/- warning: submonoid.localization_map.mul_equiv_of_localizations -> Submonoid.LocalizationMap.mulEquivOfLocalizations is a dubious translation:
-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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3) -> (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
-but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3) -> (MulEquiv.{u2, u3} N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations Submonoid.LocalizationMap.mulEquivOfLocalizationsₓ'. -/
 /-- If `f : M →* N` and `k : M →* P` are localization maps for a submonoid `S`, we get an
 isomorphism of `N` and `P`. -/
 @[to_additive
@@ -1812,12 +1341,6 @@ noncomputable def mulEquivOfLocalizations (k : LocalizationMap S P) : N ≃* P :
 #align submonoid.localization_map.mul_equiv_of_localizations Submonoid.LocalizationMap.mulEquivOfLocalizations
 #align add_submonoid.localization_map.add_equiv_of_localizations AddSubmonoid.LocalizationMap.addEquivOfLocalizations
 
-/- warning: submonoid.localization_map.mul_equiv_of_localizations_apply -> Submonoid.LocalizationMap.mulEquivOfLocalizations_apply is a dubious translation:
-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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u3} P (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k) x) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S P _inst_3 k)) x)
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) x)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
     f.mulEquivOfLocalizations k x = f.lift k.map_units x :=
@@ -1825,12 +1348,6 @@ theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
 #align submonoid.localization_map.mul_equiv_of_localizations_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_apply
 #align add_submonoid.localization_map.add_equiv_of_localizations_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_apply
 
-/- warning: submonoid.localization_map.mul_equiv_of_localizations_symm_apply -> Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_apply is a dubious translation:
-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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (MulEquiv.symm.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) x)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_symm_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_symm_apply {k : LocalizationMap S P} {x} :
     (f.mulEquivOfLocalizations k).symm x = k.lift f.map_units x :=
@@ -1838,12 +1355,6 @@ theorem mulEquivOfLocalizations_symm_apply {k : LocalizationMap S P} {x} :
 #align submonoid.localization_map.mul_equiv_of_localizations_symm_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_apply
 #align add_submonoid.localization_map.add_equiv_of_localizations_symm_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_symm_apply
 
-/- warning: submonoid.localization_map.mul_equiv_of_localizations_symm_eq_mul_equiv_of_localizations -> Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations is a dubious translation:
-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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3}, Eq.{max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (MulEquiv.symm.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k f)) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3}, Eq.{max (succ u1) (succ u2)} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (MulEquiv.symm.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k f)) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_symm_eq_mul_equiv_of_localizations Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizationsₓ'. -/
 @[to_additive]
 theorem mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations {k : LocalizationMap S P} :
     (k.mulEquivOfLocalizations f).symm = f.mulEquivOfLocalizations k :=
@@ -1851,12 +1362,6 @@ theorem mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations {k : Localizatio
 #align submonoid.localization_map.mul_equiv_of_localizations_symm_eq_mul_equiv_of_localizations Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations
 #align add_submonoid.localization_map.add_equiv_of_localizations_symm_eq_add_equiv_of_localizations AddSubmonoid.LocalizationMap.addEquivOfLocalizations_symm_eq_addEquivOfLocalizations
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_localizations -> Submonoid.LocalizationMap.ofMulEquivOfLocalizations is a dubious translation:
-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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) -> (Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3)
-but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (MulEquiv.{u2, u3} N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) -> (Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations Submonoid.LocalizationMap.ofMulEquivOfLocalizationsₓ'. -/
 /-- If `f : M →* N` is a localization map for a submonoid `S` and `k : N ≃* P` is an isomorphism
 of `comm_monoid`s, `k ∘ f` is a localization map for `M` at `S`. -/
 @[to_additive
@@ -1871,12 +1376,6 @@ def ofMulEquivOfLocalizations (k : N ≃* P) : LocalizationMap S P :=
 #align submonoid.localization_map.of_mul_equiv_of_localizations Submonoid.LocalizationMap.ofMulEquivOfLocalizations
 #align add_submonoid.localization_map.of_add_equiv_of_localizations AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_localizations_apply -> Submonoid.LocalizationMap.ofMulEquivOfLocalizations_apply is a dubious translation:
-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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : M), Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) k (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x))
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.ofMulEquivOfLocalizations_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
     (f.ofMulEquivOfLocalizations k).toMap x = k (f.toMap x) :=
@@ -1884,12 +1383,6 @@ theorem ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
 #align submonoid.localization_map.of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.ofMulEquivOfLocalizations_apply
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_apply AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_apply
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_localizations_eq -> Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq is a dubious translation:
-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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))}, Eq.{max (succ u3) (succ u1)} (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MulEquiv.toMonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) k) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f))
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))}, Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulEquiv.toMonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) k) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eqₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq {k : N ≃* P} :
     (f.ofMulEquivOfLocalizations k).toMap = k.toMonoidHom.comp f.toMap :=
@@ -1897,12 +1390,6 @@ theorem ofMulEquivOfLocalizations_eq {k : N ≃* P} :
 #align submonoid.localization_map.of_mul_equiv_of_localizations_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_eq AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_eq
 
-/- warning: submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply -> Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply is a dubious translation:
-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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_applyₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
     k.symm ((f.ofMulEquivOfLocalizations k).toMap x) = f.toMap x :=
@@ -1910,12 +1397,6 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
 #align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply
 #align add_submonoid.localization_map.symm_comp_of_add_equiv_of_localizations_apply AddSubmonoid.LocalizationMap.symm_comp_ofAddEquivOfLocalizations_apply
 
-/- warning: submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' -> Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply' is a dubious translation:
-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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) k (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
-but is expected to have type
-  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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) k (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply'ₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
     k ((f.ofMulEquivOfLocalizations k.symm).toMap x) = f.toMap x :=
@@ -1923,12 +1404,6 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
 #align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply'
 #align add_submonoid.localization_map.symm_comp_of_add_equiv_of_localizations_apply' AddSubmonoid.LocalizationMap.symm_comp_ofAddEquivOfLocalizations_apply'
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq -> Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eq is a dubious translation:
-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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} {x : M} {y : P}, Iff (Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) y))
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} {x : M} {y : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) y))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
     (f.ofMulEquivOfLocalizations k).toMap x = y ↔ f.toMap x = k.symm y :=
@@ -1936,12 +1411,6 @@ theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
 #align submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eq
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_eq_iff_eq AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_eq_iff_eq
 
-/- warning: submonoid.localization_map.mul_equiv_of_localizations_right_inv -> Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv is a dubious translation:
-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) (k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3), Eq.{max (succ u1) (succ u3)} (Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3) (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) k
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) (k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3), Eq.{max (succ u3) (succ u2)} (Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3) (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) k
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_right_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_right_invₓ'. -/
 @[to_additive add_equiv_of_localizations_right_inv]
 theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S P) :
     f.ofMulEquivOfLocalizations (f.mulEquivOfLocalizations k) = k :=
@@ -1949,12 +1418,6 @@ theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S P) :
 #align submonoid.localization_map.mul_equiv_of_localizations_right_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv
 #align add_submonoid.localization_map.add_equiv_of_localizations_right_inv AddSubmonoid.LocalizationMap.addEquivOfLocalizations_right_inv
 
-/- warning: submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply -> Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_apply is a dubious translation:
-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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) x)
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) x)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_applyₓ'. -/
 @[simp, to_additive add_equiv_of_localizations_right_inv_apply]
 theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
     (f.ofMulEquivOfLocalizations (f.mulEquivOfLocalizations k)).toMap x = k.toMap x :=
@@ -1962,12 +1425,6 @@ theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
 #align submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_apply
 #align add_submonoid.localization_map.add_equiv_of_localizations_right_inv_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_right_inv_apply
 
-/- warning: submonoid.localization_map.mul_equiv_of_localizations_left_inv -> Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv is a dubious translation:
-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) (k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))), Eq.{max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) k
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) (k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))), Eq.{max (succ u3) (succ u2)} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) k
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_left_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_left_invₓ'. -/
 @[to_additive]
 theorem mulEquivOfLocalizations_left_inv (k : N ≃* P) :
     f.mulEquivOfLocalizations (f.ofMulEquivOfLocalizations k) = k :=
@@ -1975,12 +1432,6 @@ theorem mulEquivOfLocalizations_left_inv (k : N ≃* P) :
 #align submonoid.localization_map.mul_equiv_of_localizations_left_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv
 #align add_submonoid.localization_map.add_equiv_of_localizations_left_neg AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg
 
-/- warning: submonoid.localization_map.mul_equiv_of_localizations_left_inv_apply -> Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv_apply is a dubious translation:
-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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : N), Eq.{succ u3} P (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) k x)
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : N), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_left_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_left_inv_apply {k : N ≃* P} (x) :
     f.mulEquivOfLocalizations (f.ofMulEquivOfLocalizations k) x = k x := by
@@ -1988,24 +1439,12 @@ theorem mulEquivOfLocalizations_left_inv_apply {k : N ≃* P} (x) :
 #align submonoid.localization_map.mul_equiv_of_localizations_left_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv_apply
 #align add_submonoid.localization_map.add_equiv_of_localizations_left_neg_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg_apply
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_localizations_id -> Submonoid.LocalizationMap.ofMulEquivOfLocalizations_id is a dubious translation:
-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.ofMulEquivOfLocalizations.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (MulEquiv.refl.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) 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.ofMulEquivOfLocalizations.{u2, u1, u1} M _inst_1 S N _inst_2 N _inst_2 f (MulEquiv.refl.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_id Submonoid.LocalizationMap.ofMulEquivOfLocalizations_idₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfLocalizations_id : f.ofMulEquivOfLocalizations (MulEquiv.refl N) = f := by
   ext <;> rfl
 #align submonoid.localization_map.of_mul_equiv_of_localizations_id Submonoid.LocalizationMap.ofMulEquivOfLocalizations_id
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_id AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_id
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_localizations_comp -> Submonoid.LocalizationMap.ofMulEquivOfLocalizations_comp is a dubious translation:
-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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} {j : MulEquiv.{u3, u4} P Q (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))}, Eq.{max (succ u4) (succ u1)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u1, u4} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u4} M _inst_1 S N _inst_2 Q _inst_4 f (MulEquiv.trans.{u2, u3, u4} N P Q (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) k j))) (MonoidHom.comp.{u1, u3, u4} M P Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MulEquiv.toMonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) j) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)))
-but is expected to have type
-  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.{u4}} [_inst_2 : CommMonoid.{u4} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u4} M _inst_1 S N _inst_2) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : MulEquiv.{u4, u3} N P (MulOneClass.toMul.{u4} N (Monoid.toMulOneClass.{u4} N (CommMonoid.toMonoid.{u4} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} {j : MulEquiv.{u3, u2} P Q (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)))}, Eq.{max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u4, u2} M _inst_1 S N _inst_2 Q _inst_4 f (MulEquiv.trans.{u4, u3, u2} N P Q (MulOneClass.toMul.{u4} N (Monoid.toMulOneClass.{u4} N (CommMonoid.toMonoid.{u4} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) k j))) (MonoidHom.comp.{u1, u3, u2} M P Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MulEquiv.toMonoidHom.{u3, u2} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) j) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f k)))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_comp Submonoid.LocalizationMap.ofMulEquivOfLocalizations_compₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfLocalizations_comp {k : N ≃* P} {j : P ≃* Q} :
     (f.ofMulEquivOfLocalizations (k.trans j)).toMap =
@@ -2014,12 +1453,6 @@ theorem ofMulEquivOfLocalizations_comp {k : N ≃* P} {j : P ≃* Q} :
 #align submonoid.localization_map.of_mul_equiv_of_localizations_comp Submonoid.LocalizationMap.ofMulEquivOfLocalizations_comp
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_comp AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_comp
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_dom -> Submonoid.LocalizationMap.ofMulEquivOfDom is a dubious translation:
-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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))}, (Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) -> (Submonoid.LocalizationMap.{u3, u2} P _inst_3 T N _inst_2))
-but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))}, (Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) -> (Submonoid.LocalizationMap.{u3, u2} P _inst_3 T N _inst_2))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom Submonoid.LocalizationMap.ofMulEquivOfDomₓ'. -/
 /-- Given `comm_monoid`s `M, P` and submonoids `S ⊆ M, T ⊆ P`, if `f : M →* N` is a localization
 map for `S` and `k : P ≃* M` is an isomorphism of `comm_monoid`s such that `k(T) = S`, `f ∘ k`
 is a localization map for `T`. -/
@@ -2052,9 +1485,6 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
 #align submonoid.localization_map.of_mul_equiv_of_dom Submonoid.LocalizationMap.ofMulEquivOfDom
 #align add_submonoid.localization_map.of_add_equiv_of_dom AddSubmonoid.LocalizationMap.ofAddEquivOfDom
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_dom_apply -> Submonoid.LocalizationMap.ofMulEquivOfDom_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_apply Submonoid.LocalizationMap.ofMulEquivOfDom_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
     (f.ofMulEquivOfDom H).toMap x = f.toMap (k x) :=
@@ -2062,12 +1492,6 @@ theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
 #align submonoid.localization_map.of_mul_equiv_of_dom_apply Submonoid.LocalizationMap.ofMulEquivOfDom_apply
 #align add_submonoid.localization_map.of_add_equiv_of_dom_apply AddSubmonoid.LocalizationMap.ofAddEquivOfDom_apply
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_dom_eq -> Submonoid.LocalizationMap.ofMulEquivOfDom_eq is a dubious translation:
-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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (MonoidHom.comp.{u3, u1, u2} P M N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S), Eq.{max (succ u1) (succ u3)} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (MonoidHom.comp.{u3, u2, u1} P M N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_eq Submonoid.LocalizationMap.ofMulEquivOfDom_eqₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.toMonoidHom = S) :
     (f.ofMulEquivOfDom H).toMap = f.toMap.comp k.toMonoidHom :=
@@ -2075,9 +1499,6 @@ theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.toMonoidHom = S) :
 #align submonoid.localization_map.of_mul_equiv_of_dom_eq Submonoid.LocalizationMap.ofMulEquivOfDom_eq
 #align add_submonoid.localization_map.of_add_equiv_of_dom_eq AddSubmonoid.LocalizationMap.ofAddEquivOfDom_eq
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_dom_comp_symm -> Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symm is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp_symm Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symmₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
     (f.ofMulEquivOfDom H).toMap (k.symm x) = f.toMap x :=
@@ -2085,9 +1506,6 @@ theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (
 #align submonoid.localization_map.of_mul_equiv_of_dom_comp_symm Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symm
 #align add_submonoid.localization_map.of_add_equiv_of_dom_comp_symm AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp_symm
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_dom_comp -> Submonoid.LocalizationMap.ofMulEquivOfDom_comp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp Submonoid.LocalizationMap.ofMulEquivOfDom_compₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) (x) :
     (f.ofMulEquivOfDom H).toMap (k x) = f.toMap x :=
@@ -2095,9 +1513,6 @@ theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) (
 #align submonoid.localization_map.of_mul_equiv_of_dom_comp Submonoid.LocalizationMap.ofMulEquivOfDom_comp
 #align add_submonoid.localization_map.of_add_equiv_of_dom_comp AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_dom_id -> Submonoid.LocalizationMap.ofMulEquivOfDom_id is a dubious translation:
-<too large>
-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."]
 theorem ofMulEquivOfDom_id :
@@ -2109,12 +1524,6 @@ theorem ofMulEquivOfDom_id :
 #align submonoid.localization_map.of_mul_equiv_of_dom_id Submonoid.LocalizationMap.ofMulEquivOfDom_id
 #align add_submonoid.localization_map.of_add_equiv_of_dom_id AddSubmonoid.LocalizationMap.ofAddEquivOfDom_id
 
-/- warning: submonoid.localization_map.mul_equiv_of_mul_equiv -> Submonoid.LocalizationMap.mulEquivOfMulEquiv is a dubious translation:
-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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (forall {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)))}, (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) -> (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))))))
-but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (forall {j : MulEquiv.{u1, u3} M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))}, (Eq.{succ u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.map.{u1, u3, max 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.{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) -> (MulEquiv.{u2, u4} N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_mul_equiv Submonoid.LocalizationMap.mulEquivOfMulEquivₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* U` for submonoids `S, T` respectively, an
 isomorphism `j : M ≃* P` such that `j(S) = T` induces an isomorphism of localizations
 `N ≃* U`. -/
@@ -2126,9 +1535,6 @@ noncomputable def mulEquivOfMulEquiv (k : LocalizationMap T Q) {j : M ≃* P}
 #align submonoid.localization_map.mul_equiv_of_mul_equiv Submonoid.LocalizationMap.mulEquivOfMulEquiv
 #align add_submonoid.localization_map.add_equiv_of_add_equiv AddSubmonoid.LocalizationMap.addEquivOfAddEquiv
 
-/- warning: submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map_apply -> Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map_apply is a dubious translation:
-<too large>
-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}
     (H : S.map j.toMonoidHom = T) (x) :
@@ -2138,9 +1544,6 @@ theorem mulEquivOfMulEquiv_eq_map_apply {k : LocalizationMap T Q} {j : M ≃* P}
 #align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map_apply Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map_apply
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map_apply AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map_apply
 
-/- warning: submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map -> Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map is a dubious translation:
-<too large>
-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}
     (H : S.map j.toMonoidHom = T) :
@@ -2150,9 +1553,6 @@ theorem mulEquivOfMulEquiv_eq_map {k : LocalizationMap T Q} {j : M ≃* P}
 #align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map
 
-/- warning: submonoid.localization_map.mul_equiv_of_mul_equiv_eq -> Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq Submonoid.LocalizationMap.mulEquivOfMulEquiv_eqₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T)
     (x) : f.mulEquivOfMulEquiv k H (f.toMap x) = k.toMap (j x) :=
@@ -2160,9 +1560,6 @@ theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.ma
 #align submonoid.localization_map.mul_equiv_of_mul_equiv_eq Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_eq AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq
 
-/- warning: submonoid.localization_map.mul_equiv_of_mul_equiv_mk' -> Submonoid.LocalizationMap.mulEquivOfMulEquiv_mk' is a dubious translation:
-<too large>
-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)
     (x y) :
@@ -2171,9 +1568,6 @@ theorem mulEquivOfMulEquiv_mk' {k : LocalizationMap T Q} {j : M ≃* P} (H : S.m
 #align submonoid.localization_map.mul_equiv_of_mul_equiv_mk' Submonoid.LocalizationMap.mulEquivOfMulEquiv_mk'
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_mk' AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_mk'
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply -> Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_applyₓ'. -/
 @[simp, to_additive]
 theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
     (H : S.map j.toMonoidHom = T) (x) :
@@ -2182,9 +1576,6 @@ theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
 #align submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_apply
 #align add_submonoid.localization_map.of_add_equiv_of_add_equiv_apply AddSubmonoid.LocalizationMap.of_addEquivOfAddEquiv_apply
 
-/- warning: submonoid.localization_map.of_mul_equiv_of_mul_equiv -> Submonoid.LocalizationMap.of_mulEquivOfMulEquiv is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_mul_equiv Submonoid.LocalizationMap.of_mulEquivOfMulEquivₓ'. -/
 @[to_additive]
 theorem of_mulEquivOfMulEquiv {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T) :
     (f.ofMulEquivOfLocalizations (f.mulEquivOfMulEquiv k H)).toMap = k.toMap.comp j.toMonoidHom :=
@@ -2226,24 +1617,12 @@ def monoidOf : Submonoid.LocalizationMap S (Localization S) :=
 
 variable {S}
 
-/- warning: localization.mk_one_eq_monoid_of_mk -> Localization.mk_one_eq_monoidOf_mk is a dubious translation:
-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))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
-Case conversion may be inaccurate. Consider using '#align localization.mk_one_eq_monoid_of_mk Localization.mk_one_eq_monoidOf_mkₓ'. -/
 @[to_additive]
 theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x :=
   rfl
 #align localization.mk_one_eq_monoid_of_mk Localization.mk_one_eq_monoidOf_mk
 #align add_localization.mk_zero_eq_add_monoid_of_mk AddLocalization.mk_zero_eq_addMonoidOf_mk
 
-/- warning: localization.mk_eq_monoid_of_mk'_apply -> Localization.mk_eq_monoidOf_mk'_apply is a dubious translation:
-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))} (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 u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x y) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x y)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x y) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x y)
-Case conversion may be inaccurate. Consider using '#align localization.mk_eq_monoid_of_mk'_apply Localization.mk_eq_monoidOf_mk'_applyₓ'. -/
 @[to_additive]
 theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
   show _ = _ * _ from
@@ -2256,12 +1635,6 @@ theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
 #align localization.mk_eq_monoid_of_mk'_apply Localization.mk_eq_monoidOf_mk'_apply
 #align add_localization.mk_eq_add_monoid_of_mk'_apply AddLocalization.mk_eq_addMonoidOf_mk'_apply
 
-/- warning: localization.mk_eq_monoid_of_mk' -> Localization.mk_eq_monoidOf_mk' is a dubious translation:
-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))}, Eq.{succ u1} (M -> (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) -> (Localization.{u1} M _inst_1 S)) (Localization.mk.{u1} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))}, Eq.{succ u1} (M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> (Localization.{u1} M _inst_1 S)) (Localization.mk.{u1} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S))
-Case conversion may be inaccurate. Consider using '#align localization.mk_eq_monoid_of_mk' Localization.mk_eq_monoidOf_mk'ₓ'. -/
 @[simp, to_additive]
 theorem mk_eq_monoidOf_mk' : mk = (monoidOf S).mk' :=
   funext fun _ => funext fun _ => mk_eq_monoidOf_mk'_apply _ _
@@ -2270,18 +1643,12 @@ theorem mk_eq_monoidOf_mk' : mk = (monoidOf S).mk' :=
 
 universe u
 
-/- warning: localization.lift_on_mk' -> Localization.liftOn_mk' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.lift_on_mk' Localization.liftOn_mk'ₓ'. -/
 @[simp, to_additive]
 theorem liftOn_mk' {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S) :
     liftOn ((monoidOf S).mk' a b) f H = f a b := by rw [← mk_eq_monoid_of_mk', lift_on_mk]
 #align localization.lift_on_mk' Localization.liftOn_mk'
 #align add_localization.lift_on_mk' AddLocalization.liftOn_mk'
 
-/- warning: localization.lift_on₂_mk' -> Localization.liftOn₂_mk' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.lift_on₂_mk' Localization.liftOn₂_mk'ₓ'. -/
 @[simp, to_additive]
 theorem liftOn₂_mk' {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
     liftOn₂ ((monoidOf S).mk' a b) ((monoidOf S).mk' c d) f H = f a b c d := by
@@ -2291,12 +1658,6 @@ theorem liftOn₂_mk' {p : Sort _} (f : M → S → M → S → p) (H) (a c : M)
 
 variable (f : Submonoid.LocalizationMap S N)
 
-/- warning: localization.mul_equiv_of_quotient -> Localization.mulEquivOfQuotient is a dubious translation:
-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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))
-but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))
-Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient Localization.mulEquivOfQuotientₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S`, we get an isomorphism between
 the localization of `M` at `S` as a quotient type and `N`. -/
 @[to_additive
@@ -2308,57 +1669,30 @@ noncomputable def mulEquivOfQuotient (f : Submonoid.LocalizationMap S N) : Local
 
 variable {f}
 
-/- warning: localization.mul_equiv_of_quotient_apply -> Localization.mulEquivOfQuotient_apply is a dubious translation:
-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} (x : Localization.{u1} M _inst_1 S), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (Localization.{u1} M _inst_1 S) -> N) (MonoidHom.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u1, u2} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u1} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : Localization.{u2} M _inst_1 S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Localization.{u2} M _inst_1 S) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u2, u2, u1} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u2} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
-Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_apply Localization.mulEquivOfQuotient_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lift f.map_units x :=
   rfl
 #align localization.mul_equiv_of_quotient_apply Localization.mulEquivOfQuotient_apply
 #align add_localization.add_equiv_of_quotient_apply AddLocalization.addEquivOfQuotient_apply
 
-/- warning: localization.mul_equiv_of_quotient_mk' -> Localization.mulEquivOfQuotient_mk' is a dubious translation:
-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} (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 u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (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 u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
-Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_mk' Localization.mulEquivOfQuotient_mk'ₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_mk' (x y) : mulEquivOfQuotient f ((monoidOf S).mk' x y) = f.mk' x y :=
   (monoidOf S).lift_mk' _ _ _
 #align localization.mul_equiv_of_quotient_mk' Localization.mulEquivOfQuotient_mk'
 #align add_localization.add_equiv_of_quotient_mk' AddLocalization.addEquivOfQuotient_mk'
 
-/- warning: localization.mul_equiv_of_quotient_mk -> Localization.mulEquivOfQuotient_mk is a dubious translation:
-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} (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 u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (Localization.mk.{u1} M _inst_1 S x y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (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 u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) (Localization.mk.{u2} M _inst_1 S x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) (Localization.mk.{u2} M _inst_1 S x y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
-Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_mk Localization.mulEquivOfQuotient_mkₓ'. -/
 @[to_additive]
 theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y := by
   rw [mk_eq_monoid_of_mk'_apply] <;> exact mul_equiv_of_quotient_mk' _ _
 #align localization.mul_equiv_of_quotient_mk Localization.mulEquivOfQuotient_mk
 #align add_localization.add_equiv_of_quotient_mk AddLocalization.addEquivOfQuotient_mk
 
-/- warning: localization.mul_equiv_of_quotient_monoid_of -> Localization.mulEquivOfQuotient_monoidOf is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
   (monoidOf S).liftEq _ _
 #align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOf
 #align add_localization.add_equiv_of_quotient_add_monoid_of AddLocalization.addEquivOfQuotient_addMonoidOf
 
-/- warning: localization.mul_equiv_of_quotient_symm_mk' -> Localization.mulEquivOfQuotient_symm_mk' is a dubious translation:
-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} (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 u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (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 u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)
-Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_mk' Localization.mulEquivOfQuotient_symm_mk'ₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_mk' (x y) :
     (mulEquivOfQuotient f).symm (f.mk' x y) = (monoidOf S).mk' x y :=
@@ -2366,21 +1700,12 @@ theorem mulEquivOfQuotient_symm_mk' (x y) :
 #align localization.mul_equiv_of_quotient_symm_mk' Localization.mulEquivOfQuotient_symm_mk'
 #align add_localization.add_equiv_of_quotient_symm_mk' AddLocalization.addEquivOfQuotient_symm_mk'
 
-/- warning: localization.mul_equiv_of_quotient_symm_mk -> Localization.mulEquivOfQuotient_symm_mk is a dubious translation:
-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} (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 u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Localization.mk.{u1} M _inst_1 S x 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (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 u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Localization.mk.{u2} M _inst_1 S x y)
-Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_mk Localization.mulEquivOfQuotient_symm_mkₓ'. -/
 @[to_additive]
 theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x y) = mk x y := by
   rw [mk_eq_monoid_of_mk'_apply] <;> exact mul_equiv_of_quotient_symm_mk' _ _
 #align localization.mul_equiv_of_quotient_symm_mk Localization.mulEquivOfQuotient_symm_mk
 #align add_localization.add_equiv_of_quotient_symm_mk AddLocalization.addEquivOfQuotient_symm_mk
 
-/- warning: localization.mul_equiv_of_quotient_symm_monoid_of -> Localization.mulEquivOfQuotient_symm_monoidOf is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
     (mulEquivOfQuotient f).symm (f.toMap x) = (monoidOf S).toMap x :=
@@ -2426,24 +1751,12 @@ def Away.monoidOf : Submonoid.LocalizationMap.AwayMap x (Away x) :=
 #align add_localization.away.add_monoid_of AddLocalization.Away.addMonoidOf
 -/
 
-/- warning: localization.away.mk_eq_monoid_of_mk' -> Localization.Away.mk_eq_monoidOf_mk' is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (x : M), Eq.{succ u1} (M -> (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)))) (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) -> (Localization.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))) (Localization.mk.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) (Localization.Away.{u1} M _inst_1 x) (Localization.commMonoid.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Localization.Away.monoidOf.{u1} M _inst_1 x))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (x : M), Eq.{succ u1} (M -> (Subtype.{succ u1} M (fun (x_1 : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))) -> (Localization.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))) (Localization.mk.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) (Localization.Away.{u1} M _inst_1 x) (Localization.commMonoid.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Localization.Away.monoidOf.{u1} M _inst_1 x))
-Case conversion may be inaccurate. Consider using '#align localization.away.mk_eq_monoid_of_mk' Localization.Away.mk_eq_monoidOf_mk'ₓ'. -/
 @[simp, to_additive]
 theorem Away.mk_eq_monoidOf_mk' : mk = (Away.monoidOf x).mk' :=
   mk_eq_monoidOf_mk'
 #align localization.away.mk_eq_monoid_of_mk' Localization.Away.mk_eq_monoidOf_mk'
 #align add_localization.away.mk_eq_add_monoid_of_mk' AddLocalization.Away.mk_eq_addMonoidOf_mk'
 
-/- warning: localization.away.mul_equiv_of_quotient -> Localization.Away.mulEquivOfQuotient is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (MulEquiv.{u1, u2} (Localization.Away.{u1} M _inst_1 x) N (Localization.hasMul.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (MulEquiv.{u1, u2} (Localization.Away.{u1} M _inst_1 x) N (Localization.instMulLocalization.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))
-Case conversion may be inaccurate. Consider using '#align localization.away.mul_equiv_of_quotient Localization.Away.mulEquivOfQuotientₓ'. -/
 /-- Given `x : M` and a localization map `f : M →* N` away from `x`, we get an isomorphism between
 the localization of `M` at the submonoid generated by `x` as a quotient type and `N`. -/
 @[to_additive
@@ -2518,12 +1831,6 @@ instance : CommMonoidWithZero (Localization S) := by
 
 variable {S}
 
-/- warning: localization.mk_zero -> Localization.mk_zero is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} (x : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S), Eq.{succ u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) (Localization.mk.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S (OfNat.ofNat.{u1} M 0 (OfNat.mk.{u1} M 0 (Zero.zero.{u1} M (MulZeroClass.toHasZero.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))))) x) (OfNat.ofNat.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) 0 (OfNat.mk.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) 0 (Zero.zero.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) (Localization.hasZero.{u1} M _inst_1 S))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} (x : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)), Eq.{succ u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) (Localization.mk.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M (CommMonoidWithZero.toZero.{u1} M _inst_1))) x) (OfNat.ofNat.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) 0 (Zero.toOfNat0.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) (Localization.instZeroLocalizationToCommMonoid.{u1} M _inst_1 S)))
-Case conversion may be inaccurate. Consider using '#align localization.mk_zero Localization.mk_zeroₓ'. -/
 theorem mk_zero (x : S) : mk 0 (x : S) = 0 :=
   calc
     mk 0 x = mk 0 1 := mk_eq_mk_iff.mpr (r_of_eq (by simp))
@@ -2531,9 +1838,6 @@ theorem mk_zero (x : S) : mk 0 (x : S) = 0 :=
     
 #align localization.mk_zero Localization.mk_zero
 
-/- warning: localization.lift_on_zero -> Localization.liftOn_zero is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.lift_on_zero Localization.liftOn_zeroₓ'. -/
 theorem liftOn_zero {p : Type _} (f : ∀ (x : M) (y : S), p) (H) : liftOn 0 f H = f 0 1 := by
   rw [← mk_zero 1, lift_on_mk]
 #align localization.lift_on_zero Localization.liftOn_zero
@@ -2544,12 +1848,6 @@ variable {S N}
 
 namespace Submonoid
 
-/- warning: submonoid.localization_map.sec_zero_fst -> Submonoid.LocalizationMap.sec_zero_fst is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {f : Submonoid.LocalizationMap.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)}, Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.toMap.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2) f) (Prod.fst.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S) (Submonoid.LocalizationMap.sec.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2) f (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (MulZeroClass.toHasZero.{u2} N (MulZeroOneClass.toMulZeroClass.{u2} N (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)))))))))) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (MulZeroClass.toHasZero.{u2} N (MulZeroOneClass.toMulZeroClass.{u2} N (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)))))))
-but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoidWithZero.{u2} M] {S : Submonoid.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M (MonoidWithZero.toMulZeroOneClass.{u2} M (CommMonoidWithZero.toMonoidWithZero.{u2} M _inst_1)))} {N : Type.{u1}} [_inst_2 : CommMonoidWithZero.{u1} N] {f : Submonoid.LocalizationMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2))) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) _inst_2)))
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_zero_fst Submonoid.LocalizationMap.sec_zero_fstₓ'. -/
 @[simp]
 theorem LocalizationMap.sec_zero_fst {f : LocalizationMap S N} : f.toMap (f.sec 0).fst = 0 := by
   rw [localization_map.sec_spec', MulZeroClass.mul_zero]
@@ -2557,9 +1855,6 @@ theorem LocalizationMap.sec_zero_fst {f : LocalizationMap S N} : f.toMap (f.sec
 
 namespace LocalizationWithZeroMap
 
-/- warning: submonoid.localization_with_zero_map.lift -> Submonoid.LocalizationWithZeroMap.lift is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align submonoid.localization_with_zero_map.lift Submonoid.LocalizationWithZeroMap.liftₓ'. -/
 /-- Given a localization map `f : M →*₀ N` for a submonoid `S ⊆ M` and a map of
 `comm_monoid_with_zero`s `g : M →*₀ P` such that `g y` is invertible for all `y : S`, the
 homomorphism induced from `N` to `P` sending `z : N` to `g x * (g y)⁻¹`, where `(x, y) : M × S`
@@ -2586,21 +1881,12 @@ namespace Localization
 
 variable {α : Type _} [CancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
 
-/- warning: localization.mk_left_injective -> Localization.mk_left_injective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))} (b : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s), Function.Injective.{succ u1, succ u1} α (Localization.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (a : α) => Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a b)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))} (b : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s)), Function.Injective.{succ u1, succ u1} α (Localization.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (a : α) => Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a b)
-Case conversion may be inaccurate. Consider using '#align localization.mk_left_injective Localization.mk_left_injectiveₓ'. -/
 @[to_additive]
 theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
   simpa [-mk_eq_monoid_of_mk', mk_eq_mk_iff, r_iff_exists] using h
 #align localization.mk_left_injective Localization.mk_left_injective
 #align add_localization.mk_left_injective AddLocalization.mk_left_injective
 
-/- warning: localization.mk_eq_mk_iff' -> Localization.mk_eq_mk_iff' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'ₓ'. -/
 @[to_additive]
 theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
   simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
@@ -2658,18 +1944,12 @@ instance : LT (Localization s) :=
             mul_lt_mul_iff_right, ← mul_lt_mul_iff_left, mul_left_comm, he, mul_left_comm,
             mul_left_comm ↑b₂, mul_lt_mul_iff_left])⟩
 
-/- warning: localization.mk_le_mk -> Localization.mk_le_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.mk_le_mk Localization.mk_le_mkₓ'. -/
 @[to_additive]
 theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ :=
   Iff.rfl
 #align localization.mk_le_mk Localization.mk_le_mk
 #align add_localization.mk_le_mk AddLocalization.mk_le_mk
 
-/- warning: localization.mk_lt_mk -> Localization.mk_lt_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align localization.mk_lt_mk Localization.mk_lt_mkₓ'. -/
 @[to_additive]
 theorem mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ :=
   Iff.rfl
@@ -2716,12 +1996,6 @@ instance : OrderedCancelCommMonoid (Localization s) :=
         simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab⊢
         exact le_of_mul_le_mul_left' hab }
 
-/- warning: localization.decidable_le -> Localization.decidableLE is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19599 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19601 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19599 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19601)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19624 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19626 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19624 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19626)
-Case conversion may be inaccurate. Consider using '#align localization.decidable_le Localization.decidableLEₓ'. -/
 @[to_additive]
 instance decidableLE [DecidableRel ((· ≤ ·) : α → α → Prop)] :
     DecidableRel ((· ≤ ·) : Localization s → Localization s → Prop) := fun a b =>
@@ -2729,12 +2003,6 @@ instance decidableLE [DecidableRel ((· ≤ ·) : α → α → Prop)] :
 #align localization.decidable_le Localization.decidableLE
 #align add_localization.decidable_le AddLocalization.decidableLE
 
-/- warning: localization.decidable_lt -> Localization.decidableLT is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19683 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19685 : α) => LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19683 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19685)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19708 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19710 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19708 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19710)
-Case conversion may be inaccurate. Consider using '#align localization.decidable_lt Localization.decidableLTₓ'. -/
 @[to_additive]
 instance decidableLT [DecidableRel ((· < ·) : α → α → Prop)] :
     DecidableRel ((· < ·) : Localization s → Localization s → Prop) := fun a b =>
@@ -2742,12 +2010,6 @@ instance decidableLT [DecidableRel ((· < ·) : α → α → Prop)] :
 #align localization.decidable_lt Localization.decidableLT
 #align add_localization.decidable_lt AddLocalization.decidableLT
 
-/- warning: localization.mk_order_embedding -> Localization.mkOrderEmbedding is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))}, (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) -> (OrderEmbedding.{u1, u1} α (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (Localization.hasLe.{u1} α _inst_1 s))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))}, (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)) -> (OrderEmbedding.{u1, u1} α (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (Localization.le.{u1} α _inst_1 s))
-Case conversion may be inaccurate. Consider using '#align localization.mk_order_embedding Localization.mkOrderEmbeddingₓ'. -/
 /-- An ordered cancellative monoid injects into its localization by sending `a` to `a / b`. -/
 @[to_additive
       "An ordered cancellative monoid injects into its localization by sending `a` to\n`a - b`.",
Diff
@@ -176,21 +176,14 @@ def r' : Con (M × S) :=
     simp only [Submonoid.coe_mul]
     calc
       (t₂ * t₁ * b.2 : M) * (c.2 * a.1) = t₂ * c.2 * (t₁ * (b.2 * a.1)) := by ac_rfl
-      _ = t₁ * a.2 * (t₂ * (c.2 * b.1)) := by
-        rw [ht₁]
-        ac_rfl
-      _ = t₂ * t₁ * b.2 * (a.2 * c.1) := by
-        rw [ht₂]
-        ac_rfl
+      _ = t₁ * a.2 * (t₂ * (c.2 * b.1)) := by rw [ht₁]; ac_rfl
+      _ = t₂ * t₁ * b.2 * (a.2 * c.1) := by rw [ht₂]; ac_rfl
       
   · rintro a b c d ⟨t₁, ht₁⟩ ⟨t₂, ht₂⟩
     use t₂ * t₁
     calc
       (t₂ * t₁ : M) * (b.2 * d.2 * (a.1 * c.1)) = t₂ * (d.2 * c.1) * (t₁ * (b.2 * a.1)) := by ac_rfl
-      _ = (t₂ * t₁ : M) * (a.2 * c.2 * (b.1 * d.1)) :=
-        by
-        rw [ht₁, ht₂]
-        ac_rfl
+      _ = (t₂ * t₁ : M) * (a.2 * c.2 * (b.1 * d.1)) := by rw [ht₁, ht₂]; ac_rfl
       
 #align localization.r' Localization.r'
 #align add_localization.r' AddLocalization.r'
@@ -353,11 +346,7 @@ def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
         (Eq.ndrec (f a b) (mk_eq_mk_iff.mpr h) : p (mk c d)) = f c d)
     (x) : p x :=
   Quot.rec (fun y => Eq.ndrec (f y.1 y.2) (Prod.mk.eta : (y.1, y.2) = y))
-    (fun y z h => by
-      cases y
-      cases z
-      exact H h)
-    x
+    (fun y z h => by cases y; cases z; exact H h) x
 #align localization.rec Localization.rec
 #align add_localization.rec AddLocalization.rec
 
@@ -551,10 +540,7 @@ but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (a : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) a) a) (OfNat.ofNat.{u1} (Localization.{u1} M _inst_1 S) 1 (One.toOfNat1.{u1} (Localization.{u1} M _inst_1 S) (Localization.instOneLocalization.{u1} M _inst_1 S)))
 Case conversion may be inaccurate. Consider using '#align localization.mk_self Localization.mk_selfₓ'. -/
 @[to_additive]
-theorem mk_self (a : S) : mk (a : M) a = 1 := by
-  symm
-  rw [← mk_one, mk_eq_mk_iff]
-  exact one_rel a
+theorem mk_self (a : S) : mk (a : M) a = 1 := by symm; rw [← mk_one, mk_eq_mk_iff]; exact one_rel a
 #align localization.mk_self Localization.mk_self
 #align add_localization.mk_self AddLocalization.mk_self
 
@@ -596,9 +582,7 @@ but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4] (c : R) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (HSMul.hSMul.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (instHSMul.{u2, u1} R (Localization.{u1} M _inst_1 S) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5)) c (Localization.mk.{u1} M _inst_1 S a b)) (Localization.mk.{u1} M _inst_1 S (HSMul.hSMul.{u2, u1, u1} R M M (instHSMul.{u2, u1} R M _inst_4) c a) b)
 Case conversion may be inaccurate. Consider using '#align localization.smul_mk Localization.smul_mkₓ'. -/
 theorem smul_mk [SMul R M] [IsScalarTower R M M] (c : R) (a b) :
-    c • (mk a b : Localization S) = mk (c • a) b :=
-  by
-  unfold SMul.smul Localization.smul
+    c • (mk a b : Localization S) = mk (c • a) b := by unfold SMul.smul Localization.smul;
   apply lift_on_mk
 #align localization.smul_mk Localization.smul_mk
 
@@ -650,16 +634,9 @@ instance [SMul R M] [SMul Rᵐᵒᵖ M] [IsScalarTower R M M] [IsScalarTower R
 
 instance [Monoid R] [MulAction R M] [IsScalarTower R M M] : MulAction R (Localization S)
     where
-  one_smul :=
-    Localization.ind <|
-      Prod.rec <| by
-        intros
-        simp only [Localization.smul_mk, one_smul]
+  one_smul := Localization.ind <| Prod.rec <| by intros ; simp only [Localization.smul_mk, one_smul]
   mul_smul s₁ s₂ :=
-    Localization.ind <|
-      Prod.rec <| by
-        intros
-        simp only [Localization.smul_mk, mul_smul]
+    Localization.ind <| Prod.rec <| by intros ; simp only [Localization.smul_mk, mul_smul]
 
 instance [Monoid R] [MulDistribMulAction R M] [IsScalarTower R M M] :
     MulDistribMulAction R (Localization S)
@@ -716,12 +693,8 @@ 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} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.ext Submonoid.LocalizationMap.extₓ'. -/
 @[ext, to_additive]
-theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f = g :=
-  by
-  rcases f with ⟨⟨⟩⟩
-  rcases g with ⟨⟨⟩⟩
-  simp only
-  exact funext h
+theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f = g := by
+  rcases f with ⟨⟨⟩⟩; rcases g with ⟨⟨⟩⟩; simp only; exact funext h
 #align submonoid.localization_map.ext Submonoid.LocalizationMap.ext
 #align add_submonoid.localization_map.ext AddSubmonoid.LocalizationMap.ext
 
@@ -2795,10 +2768,7 @@ instance [LinearOrderedCancelCommMonoid α] {s : Submonoid α} :
   {
     Localization.orderedCancelCommMonoid with
     le_total := fun a b =>
-      Localization.induction_on₂ a b fun _ _ =>
-        by
-        simp_rw [mk_le_mk]
-        exact le_total _ _
+      Localization.induction_on₂ a b fun _ _ => by simp_rw [mk_le_mk]; exact le_total _ _
     decidableLe := @Localization.decidableLE α _ _ LE.le.decidable
     decidableLt := @Localization.decidableLT α _ _ LT.lt.decidable
     decidableLt := Localization.decidableEq }
Diff
@@ -221,10 +221,7 @@ theorem r_eq_r' : r S = r' S :=
 variable {S}
 
 /- warning: localization.r_iff_exists -> Localization.r_iff_exists is a dubious translation:
-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))} {x : Prod.{u1, u1} M (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)} {y : Prod.{u1, u1} M (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)}, Iff (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) x y) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) (Prod.snd.{u1, u1} M (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) y)) (Prod.fst.{u1, u1} M (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) x))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) (Prod.snd.{u1, u1} M (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) x)) (Prod.fst.{u1, u1} M (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) y)))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))} {y : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))}, Iff (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) x y) (Exists.{succ u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (fun (c : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y)) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.r_iff_exists Localization.r_iff_existsₓ'. -/
 @[to_additive]
 theorem r_iff_exists {x y : M × S} : r S x y ↔ ∃ c : S, ↑c * (↑y.2 * x.1) = c * (x.2 * y.1) := by
@@ -331,10 +328,7 @@ def mk (x : M) (y : S) : Localization S :=
 #align add_localization.mk AddLocalization.mk
 
 /- warning: localization.mk_eq_mk_iff -> Localization.mk_eq_mk_iff is a dubious translation:
-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))} {a : M} {c : M} {b : 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} {d : 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}, Iff (Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d)) (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) c d))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {a : M} {c : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)}, Iff (Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d)) (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d))
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.mk_eq_mk_iff Localization.mk_eq_mk_iffₓ'. -/
 @[to_additive]
 theorem mk_eq_mk_iff {a c : M} {b d : S} : mk a b = mk c d ↔ r S ⟨a, b⟩ ⟨c, d⟩ :=
@@ -345,10 +339,7 @@ theorem mk_eq_mk_iff {a c : M} {b d : S} : mk a b = mk c d ↔ r S ⟨a, b⟩ 
 universe u
 
 /- warning: localization.rec -> Localization.rec is a dubious translation:
-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))} {p : (Localization.{u1} M _inst_1 S) -> Sort.{u2}} (f : forall (a : M) (b : 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), p (Localization.mk.{u1} M _inst_1 S a b)), (forall {a : M} {c : M} {b : 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} {d : 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} (h : coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) c d)), Eq.{u2} ((fun (_x : Localization.{u1} M _inst_1 S) => p _x) (Localization.mk.{u1} M _inst_1 S c d)) (Eq.ndrec.{u2, succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S a b) (fun (_x : Localization.{u1} M _inst_1 S) => p _x) (f a b) (Localization.mk.{u1} M _inst_1 S c d) (Localization.rec._proof_1.{u1} M _inst_1 S a c b d h)) (f c d)) -> (forall (x : Localization.{u1} M _inst_1 S), p 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))} {p : (Localization.{u2} M _inst_1 S) -> Sort.{u1}} (f : forall (a : M) (b : 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)), p (Localization.mk.{u2} M _inst_1 S a b)), (forall {a : M} {c : M} {b : 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)} {d : 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)} (h : FunLike.coe.{succ u2, succ u2, succ u2} (Con.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Prod.{u2, u2} M (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))) (fun (_x : Prod.{u2, u2} M (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))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u2, u2} M (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))) => (Prod.{u2, u2} M (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))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Localization.r.{u2} M _inst_1 S) (Prod.mk.{u2, u2} M (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)) a b) (Prod.mk.{u2, u2} M (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)) c d)), Eq.{u1} (p (Localization.mk.{u2} M _inst_1 S c d)) (Eq.ndrec.{u1, succ u2} (Localization.{u2} M _inst_1 S) (Localization.mk.{u2} M _inst_1 S a b) p (f a b) (Localization.mk.{u2} M _inst_1 S c d) (Iff.mpr (Eq.{succ u2} (Localization.{u2} M _inst_1 S) (Localization.mk.{u2} M _inst_1 S a b) (Localization.mk.{u2} M _inst_1 S c d)) (FunLike.coe.{succ u2, succ u2, succ u2} (Con.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Prod.{u2, u2} M (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))) (fun (a : Prod.{u2, u2} M (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))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u2, u2} M (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))) => (Prod.{u2, u2} M (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))) -> Prop) a) (Con.instFunLikeConForAllProp.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Localization.r.{u2} M _inst_1 S) (Prod.mk.{u2, u2} M (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)) a b) (Prod.mk.{u2, u2} M (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)) c d)) (Localization.mk_eq_mk_iff.{u2} M _inst_1 S a c b d) h)) (f c d)) -> (forall (x : Localization.{u2} M _inst_1 S), p x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.rec Localization.recₓ'. -/
 /-- Dependent recursion principle for localizations: given elements `f a b : p (mk a b)`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (with the correct coercions),
@@ -423,10 +414,7 @@ theorem mk_pow (n : ℕ) (a : M) (b : S) : mk a b ^ n = mk (a ^ n) (b ^ n) :=
 #align add_localization.mk_nsmul AddLocalization.mk_nsmul
 
 /- warning: localization.rec_mk -> Localization.ndrec_mk is a dubious translation:
-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))} {p : (Localization.{u1} M _inst_1 S) -> Sort.{u2}} (f : forall (a : M) (b : 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), p (Localization.mk.{u1} M _inst_1 S a b)) (H : forall {a : M} {c : M} {b : 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} {d : 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} (h : coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) c d)), Eq.{u2} ((fun (_x : Localization.{u1} M _inst_1 S) => p _x) (Localization.mk.{u1} M _inst_1 S c d)) (Eq.ndrec.{u2, succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S a b) (fun (_x : Localization.{u1} M _inst_1 S) => p _x) (f a b) (Localization.mk.{u1} M _inst_1 S c d) (Localization.rec._proof_1.{u1} M _inst_1 S a c b d h)) (f c d)) (a : M) (b : 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.{u2} ((fun (_x : Localization.{u1} M _inst_1 S) => p _x) (Localization.mk.{u1} M _inst_1 S a b)) (Localization.rec.{u1, u2} M _inst_1 S (fun (_x : Localization.{u1} M _inst_1 S) => p _x) f H (Localization.mk.{u1} M _inst_1 S a b)) (f a b)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : (Localization.{u1} M _inst_1 S) -> Sort.{u2}} (f : forall (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), p (Localization.mk.{u1} M _inst_1 S a b)) (H : forall {a : M} {c : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} (h : FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d)), Eq.{u2} (p (Localization.mk.{u1} M _inst_1 S c d)) (Eq.ndrec.{u2, succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S a b) (fun (_x : Localization.{u1} M _inst_1 S) => p _x) (f a b) (Localization.mk.{u1} M _inst_1 S c d) (Iff.mpr (Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d)) (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (a : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) a) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d)) (Localization.mk_eq_mk_iff.{u1} M _inst_1 S a c b d) h)) (f c d)) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{u2} (p (Localization.mk.{u1} M _inst_1 S a b)) (Localization.rec.{u2, u1} M _inst_1 S (fun (_x : Localization.{u1} M _inst_1 S) => p _x) f H (Localization.mk.{u1} M _inst_1 S a b)) (f a b)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.rec_mk Localization.ndrec_mkₓ'. -/
 @[simp, to_additive]
 theorem ndrec_mk {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b)) (H) (a : M)
@@ -436,10 +424,7 @@ theorem ndrec_mk {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk
 #align add_localization.rec_mk AddLocalization.ndrec_mk
 
 /- warning: localization.lift_on -> Localization.liftOn is a dubious translation:
-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))} {p : Sort.{u2}}, (Localization.{u1} M _inst_1 S) -> (forall (f : M -> (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) -> p), (forall {a : M} {c : M} {b : 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} {d : 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}, (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) c d)) -> (Eq.{u2} p (f a b) (f c d))) -> p)
-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))} {p : Sort.{u1}}, (Localization.{u2} M _inst_1 S) -> (forall (f : M -> (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)) -> p), (forall {a : M} {c : M} {b : 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)} {d : 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)}, (FunLike.coe.{succ u2, succ u2, succ u2} (Con.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Prod.{u2, u2} M (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))) (fun (_x : Prod.{u2, u2} M (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))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u2, u2} M (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))) => (Prod.{u2, u2} M (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))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Localization.r.{u2} M _inst_1 S) (Prod.mk.{u2, u2} M (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)) a b) (Prod.mk.{u2, u2} M (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)) c d)) -> (Eq.{u1} p (f a b) (f c d))) -> p)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.lift_on Localization.liftOnₓ'. -/
 /-- Non-dependent recursion principle for localizations: given elements `f a b : p`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d`,
@@ -454,10 +439,7 @@ def liftOn {p : Sort u} (x : Localization S) (f : M → S → p)
 #align add_localization.lift_on AddLocalization.liftOn
 
 /- warning: localization.lift_on_mk -> Localization.liftOn_mk is a dubious translation:
-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))} {p : Sort.{u2}} (f : M -> (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) -> p) (H : forall {a : M} {c : M} {b : 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} {d : 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}, (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) c d)) -> (Eq.{u2} p (f a b) (f c d))) (a : M) (b : 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.{u2} p (Localization.liftOn.{u1, u2} M _inst_1 S p (Localization.mk.{u1} M _inst_1 S a b) f H) (f a b)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : Sort.{u2}} (f : M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> p) (H : forall {a : M} {c : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)}, (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d)) -> (Eq.{u2} p (f a b) (f c d))) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{u2} p (Localization.liftOn.{u2, u1} M _inst_1 S p (Localization.mk.{u1} M _inst_1 S a b) f H) (f a b)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.lift_on_mk Localization.liftOn_mkₓ'. -/
 @[to_additive]
 theorem liftOn_mk {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S) :
@@ -491,10 +473,7 @@ theorem induction_on {p : Localization S → Prop} (x) (H : ∀ y : M × S, p (m
 #align add_localization.induction_on AddLocalization.induction_on
 
 /- warning: localization.lift_on₂ -> Localization.liftOn₂ is a dubious translation:
-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))} {p : Sort.{u2}}, (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S) -> (forall (f : M -> (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 -> (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) -> p), (forall {a : M} {a' : M} {b : 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} {b' : 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} {c : M} {c' : M} {d : 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} {d' : 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}, (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) a' b')) -> (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) c d) (Prod.mk.{u1, u1} M (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) c' d')) -> (Eq.{u2} p (f a b c d) (f a' b' c' d'))) -> p)
-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))} {p : Sort.{u1}}, (Localization.{u2} M _inst_1 S) -> (Localization.{u2} M _inst_1 S) -> (forall (f : M -> (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)) -> M -> (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)) -> p), (forall {a : M} {a' : M} {b : 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)} {b' : 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)} {c : M} {c' : M} {d : 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)} {d' : 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)}, (FunLike.coe.{succ u2, succ u2, succ u2} (Con.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Prod.{u2, u2} M (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))) (fun (_x : Prod.{u2, u2} M (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))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u2, u2} M (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))) => (Prod.{u2, u2} M (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))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Localization.r.{u2} M _inst_1 S) (Prod.mk.{u2, u2} M (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)) a b) (Prod.mk.{u2, u2} M (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)) a' b')) -> (FunLike.coe.{succ u2, succ u2, succ u2} (Con.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Prod.{u2, u2} M (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))) (fun (_x : Prod.{u2, u2} M (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))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u2, u2} M (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))) => (Prod.{u2, u2} M (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))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Localization.r.{u2} M _inst_1 S) (Prod.mk.{u2, u2} M (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)) c d) (Prod.mk.{u2, u2} M (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)) c' d')) -> (Eq.{u1} p (f a b c d) (f a' b' c' d'))) -> p)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.lift_on₂ Localization.liftOn₂ₓ'. -/
 /-- Non-dependent recursion principle for localizations: given elements `f x y : p`
 for all `x` and `y`, such that `r S x x'` and `r S y y'` implies `f x y = f x' y'`,
@@ -513,10 +492,7 @@ def liftOn₂ {p : Sort u} (x y : Localization S) (f : M → S → M → S → p
 #align add_localization.lift_on₂ AddLocalization.liftOn₂
 
 /- warning: localization.lift_on₂_mk -> Localization.liftOn₂_mk is a dubious translation:
-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))} {p : Sort.{u2}} (f : M -> (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 -> (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) -> p) (H : forall {a : M} {a' : M} {b : 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} {b' : 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} {c : M} {c' : M} {d : 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} {d' : 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}, (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) a' b')) -> (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) c d) (Prod.mk.{u1, u1} M (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) c' d')) -> (Eq.{u2} p (f a b c d) (f a' b' c' d'))) (a : M) (c : M) (b : 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) (d : 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.{u2} p (Localization.liftOn₂.{u1, u2} M _inst_1 S p (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d) f H) (f a b c d)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : Sort.{u2}} (f : M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> p) (H : forall {a : M} {a' : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {b' : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {c : M} {c' : M} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d' : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)}, (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a' b')) -> (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c' d')) -> (Eq.{u2} p (f a b c d) (f a' b' c' d'))) (a : M) (c : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{u2} p (Localization.liftOn₂.{u2, u1} M _inst_1 S p (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d) f H) (f a b c d)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.lift_on₂_mk Localization.liftOn₂_mkₓ'. -/
 @[to_additive]
 theorem liftOn₂_mk {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
@@ -552,10 +528,7 @@ theorem induction_on₃ {p : Localization S → Localization S → Localization
 #align add_localization.induction_on₃ AddLocalization.induction_on₃
 
 /- warning: localization.one_rel -> Localization.one_rel is a dubious translation:
-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))} (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), coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (OfNat.ofNat.{u1} (Prod.{u1, u1} M (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)) 1 (OfNat.mk.{u1} (Prod.{u1, u1} M (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)) 1 (One.one.{u1} (Prod.{u1, u1} M (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)) (Prod.hasOne.{u1, u1} M (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) (MulOneClass.toHasOne.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (Prod.mk.{u1, u1} M (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 (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) y)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (OfNat.ofNat.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) 1 (One.toOfNat1.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instOneProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Monoid.toOne.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y) y)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.one_rel Localization.one_relₓ'. -/
 @[to_additive]
 theorem one_rel (y : S) : r S 1 (y, y) := fun b hb => hb y
@@ -563,10 +536,7 @@ theorem one_rel (y : S) : r S 1 (y, y) := fun b hb => hb y
 #align add_localization.zero_rel AddLocalization.zero_rel
 
 /- warning: localization.r_of_eq -> Localization.r_of_eq is a dubious translation:
-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))} {x : Prod.{u1, u1} M (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)} {y : Prod.{u1, u1} M (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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) (Prod.snd.{u1, u1} M (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) y)) (Prod.fst.{u1, u1} M (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) x)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) (Prod.snd.{u1, u1} M (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) x)) (Prod.fst.{u1, u1} M (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) y))) -> (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) x y)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))} {y : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))}, (Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y)) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) y))) -> (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) x y)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.r_of_eq Localization.r_of_eqₓ'. -/
 @[to_additive]
 theorem r_of_eq {x y : M × S} (h : ↑y.2 * x.1 = ↑x.2 * y.1) : r S x y :=
@@ -709,10 +679,7 @@ variable {S N}
 namespace MonoidHom
 
 /- warning: monoid_hom.to_localization_map -> MonoidHom.toLocalizationMap is a dubious translation:
-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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (Prod.fst.{u1, u1} M (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) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f y)) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
-but is expected to have type
-  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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f y)) (Exists.{succ u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (fun (c : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
+<too large>
 Case conversion may be inaccurate. Consider using '#align monoid_hom.to_localization_map MonoidHom.toLocalizationMapₓ'. -/
 /-- Makes a localization map from a `comm_monoid` hom satisfying the characteristic predicate. -/
 @[to_additive
@@ -795,10 +762,7 @@ theorem map_units (f : LocalizationMap S N) (y : S) : IsUnit (f.toMap y) :=
 #align add_submonoid.localization_map.map_add_units AddSubmonoid.LocalizationMap.map_addUnits
 
 /- warning: submonoid.localization_map.surj -> Submonoid.LocalizationMap.surj is a dubious translation:
-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) (z : N), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (z : N), Exists.{succ u2} (Prod.{u2, u2} M (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))) (fun (x : Prod.{u2, u2} M (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) x))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) x)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) x)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.surj Submonoid.LocalizationMap.surjₓ'. -/
 @[to_additive]
 theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2 = f.toMap x.1 :=
@@ -807,10 +771,7 @@ theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2
 #align add_submonoid.localization_map.surj AddSubmonoid.LocalizationMap.surj
 
 /- warning: submonoid.localization_map.eq_iff_exists -> Submonoid.LocalizationMap.eq_iff_exists is a dubious translation:
-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) {x : M} {y : M}, Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) (Exists.{succ u2} (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)) (fun (c : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_iff_exists Submonoid.LocalizationMap.eq_iff_existsₓ'. -/
 @[to_additive]
 theorem eq_iff_exists (f : LocalizationMap S N) {x y} :
@@ -848,10 +809,7 @@ theorem sec_spec {f : LocalizationMap S N} (z : N) :
 #align add_submonoid.localization_map.sec_spec AddSubmonoid.LocalizationMap.sec_spec
 
 /- warning: submonoid.localization_map.sec_spec' -> Submonoid.LocalizationMap.sec_spec' is a dubious translation:
-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} (z : N), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) z)
-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} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) z)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_spec' Submonoid.LocalizationMap.sec_spec'ₓ'. -/
 @[to_additive]
 theorem sec_spec' {f : LocalizationMap S N} (z : N) :
@@ -860,10 +818,7 @@ theorem sec_spec' {f : LocalizationMap S N} (z : N) :
 #align add_submonoid.localization_map.sec_spec' AddSubmonoid.LocalizationMap.sec_spec'
 
 /- warning: submonoid.localization_map.mul_inv_left -> Submonoid.LocalizationMap.mul_inv_left is a dubious translation:
-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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y)))) z) (Eq.{succ u2} N w (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z))
-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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y)))) z) (Eq.{succ u1} N w (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_left Submonoid.LocalizationMap.mul_inv_leftₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `w * (f y)⁻¹ = z ↔ w = f y * z`. -/
@@ -877,10 +832,7 @@ theorem mul_inv_left {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 #align add_submonoid.localization_map.add_neg_left AddSubmonoid.LocalizationMap.add_neg_left
 
 /- warning: submonoid.localization_map.mul_inv_right -> Submonoid.LocalizationMap.mul_inv_right is a dubious translation:
-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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N z (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))))) (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) w)
-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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N z (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))))) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) w)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_right Submonoid.LocalizationMap.mul_inv_rightₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `z = w * (f y)⁻¹ ↔ z * f y = w`. -/
@@ -893,10 +845,7 @@ theorem mul_inv_right {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 #align add_submonoid.localization_map.add_neg_right AddSubmonoid.LocalizationMap.add_neg_right
 
 /- warning: submonoid.localization_map.mul_inv -> Submonoid.LocalizationMap.mul_inv is a dubious translation:
-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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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₁ : M} {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} {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}, Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₁) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₂) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₂))))) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ ((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₂))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₂ ((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₁))))
-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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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₁ : M} {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)} {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)}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₁) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₁) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₂) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₂) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₂))))) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv Submonoid.LocalizationMap.mul_invₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that
 `f(S) ⊆ Nˣ`, for all `x₁ x₂ : M` and `y₁, y₂ ∈ S`, we have
@@ -915,10 +864,7 @@ theorem mul_inv {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {x₁ x₂} {y₁ y
 #align add_submonoid.localization_map.add_neg AddSubmonoid.LocalizationMap.add_neg
 
 /- warning: submonoid.localization_map.inv_inj -> Submonoid.LocalizationMap.inv_inj is a dubious translation:
-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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (hf : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : 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 u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) y)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) z))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))))) z)))
-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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (hf : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) y)) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) z) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) z))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_inj Submonoid.LocalizationMap.inv_injₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y, z ∈ S`, we have `(f y)⁻¹ = (f z)⁻¹ → f y = f z`. -/
@@ -933,10 +879,7 @@ theorem inv_inj {f : M →* N} (hf : ∀ y : S, IsUnit (f y)) {y z}
 #align add_submonoid.localization_map.neg_inj AddSubmonoid.LocalizationMap.neg_inj
 
 /- warning: submonoid.localization_map.inv_unique -> Submonoid.LocalizationMap.inv_unique is a dubious translation:
-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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : N}, (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z) (OfNat.ofNat.{u2} N 1 (OfNat.mk.{u2} N 1 (One.one.{u2} N (MulOneClass.toHasOne.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) -> (Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))) z)
-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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : N}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Monoid.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2))))) -> (Eq.{succ u1} N (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))) z)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_unique Submonoid.LocalizationMap.inv_uniqueₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y ∈ S`, `(f y)⁻¹` is unique. -/
@@ -950,10 +893,7 @@ theorem inv_unique {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {y : S} {z} (H :
 variable (f : LocalizationMap S N)
 
 /- warning: submonoid.localization_map.map_right_cancel -> Submonoid.LocalizationMap.map_right_cancel is a dubious translation:
-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) {x : M} {y : M} {c : 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 u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) y))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancelₓ'. -/
 @[to_additive]
 theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
@@ -967,10 +907,7 @@ theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
 #align add_submonoid.localization_map.map_right_cancel AddSubmonoid.LocalizationMap.map_right_cancel
 
 /- warning: submonoid.localization_map.map_left_cancel -> Submonoid.LocalizationMap.map_left_cancel is a dubious translation:
-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) {x : M} {y : M} {c : 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 u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x ((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))))) c))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) y ((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))))) c)))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y (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)) c)))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_left_cancel Submonoid.LocalizationMap.map_left_cancelₓ'. -/
 @[to_additive]
 theorem map_left_cancel {x y} {c : S} (h : f.toMap (x * c) = f.toMap (y * c)) :
@@ -995,10 +932,7 @@ noncomputable def mk' (f : LocalizationMap S N) (x : M) (y : S) : N :=
 #align add_submonoid.localization_map.mk' AddSubmonoid.LocalizationMap.mk'
 
 /- warning: submonoid.localization_map.mk'_mul -> Submonoid.LocalizationMap.mk'_mul is a dubious translation:
-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) (x₁ : M) (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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ x₂) (HMul.hMul.{u1, u1, 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) (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) (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) (instHMul.{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) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)) y₁ y₂)) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (x₁ : M) (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)) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) (HMul.hMul.{u2, u2, u2} (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)) (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)) (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)) (instHMul.{u2} (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)) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S)) y₁ y₂)) (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul Submonoid.LocalizationMap.mk'_mulₓ'. -/
 @[to_additive]
 theorem mk'_mul (x₁ x₂ : M) (y₁ y₂ : S) : f.mk' (x₁ * x₂) (y₁ * y₂) = f.mk' x₁ y₁ * f.mk' x₂ y₂ :=
@@ -1060,10 +994,7 @@ theorem mk'_spec (x) (y : S) : f.mk' x y * f.toMap y = f.toMap x :=
 #align add_submonoid.localization_map.mk'_spec AddSubmonoid.LocalizationMap.mk'_spec
 
 /- warning: submonoid.localization_map.mk'_spec' -> Submonoid.LocalizationMap.mk'_spec' is a dubious translation:
-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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_spec' Submonoid.LocalizationMap.mk'_spec'ₓ'. -/
 @[to_additive]
 theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_comm, mk'_spec]
@@ -1071,10 +1002,7 @@ theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_
 #align add_submonoid.localization_map.mk'_spec' AddSubmonoid.LocalizationMap.mk'_spec'
 
 /- warning: submonoid.localization_map.eq_mk'_iff_mul_eq -> Submonoid.LocalizationMap.eq_mk'_iff_mul_eq is a dubious translation:
-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) {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} {z : N}, Iff (Eq.{succ u2} N z (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {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)} {z : N}, Iff (Eq.{succ u1} N z (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_mk'_iff_mul_eq Submonoid.LocalizationMap.eq_mk'_iff_mul_eqₓ'. -/
 @[to_additive]
 theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.toMap x :=
@@ -1095,10 +1023,7 @@ theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.
 #align add_submonoid.localization_map.mk'_eq_iff_eq_add AddSubmonoid.LocalizationMap.mk'_eq_iff_eq_add
 
 /- warning: submonoid.localization_map.mk'_eq_iff_eq -> Submonoid.LocalizationMap.mk'_eq_iff_eq is a dubious translation:
-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) {x₁ : M} {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} {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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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₁)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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₂)))
-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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₂)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq Submonoid.LocalizationMap.mk'_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
@@ -1114,10 +1039,7 @@ theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
 #align add_submonoid.localization_map.mk'_eq_iff_eq AddSubmonoid.LocalizationMap.mk'_eq_iff_eq
 
 /- warning: submonoid.localization_map.mk'_eq_iff_eq' -> Submonoid.LocalizationMap.mk'_eq_iff_eq' is a dubious translation:
-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) {x₁ : M} {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} {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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ ((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₂))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₂ ((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₁))))
-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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq' Submonoid.LocalizationMap.mk'_eq_iff_eq'ₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq' {x₁ x₂} {y₁ y₂ : S} :
@@ -1127,10 +1049,7 @@ theorem mk'_eq_iff_eq' {x₁ x₂} {y₁ y₂ : S} :
 #align add_submonoid.localization_map.mk'_eq_iff_eq' AddSubmonoid.LocalizationMap.mk'_eq_iff_eq'
 
 /- warning: submonoid.localization_map.eq -> Submonoid.LocalizationMap.eq is a dubious translation:
-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) {a₁ : M} {b₁ : M} {a₂ : 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} {b₂ : 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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f a₁ a₂) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f b₁ b₂)) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) b₂) a₁)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) a₂) b₁))))
-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) {a₁ : M} {b₁ : M} {a₂ : 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)} {b₂ : 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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f a₁ a₂) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f b₁ b₂)) (Exists.{succ u2} (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)) (fun (c : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) b₂) a₁)) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) a₂) b₁))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq Submonoid.LocalizationMap.eqₓ'. -/
 @[to_additive]
 protected theorem eq {a₁ b₁} {a₂ b₂ : S} :
@@ -1140,10 +1059,7 @@ protected theorem eq {a₁ b₁} {a₂ b₂ : S} :
 #align add_submonoid.localization_map.eq AddSubmonoid.LocalizationMap.eq
 
 /- warning: submonoid.localization_map.eq' -> Submonoid.LocalizationMap.eq' is a dubious translation:
-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) {a₁ : M} {b₁ : M} {a₂ : 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} {b₂ : 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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f a₁ a₂) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f b₁ b₂)) (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a₁ a₂) (Prod.mk.{u1, u1} M (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) b₁ b₂))
-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) {a₁ : M} {b₁ : M} {a₂ : 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)} {b₂ : 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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f a₁ a₂) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f b₁ b₂)) (FunLike.coe.{succ u2, succ u2, succ u2} (Con.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Prod.{u2, u2} M (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))) (fun (_x : Prod.{u2, u2} M (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))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u2, u2} M (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))) => (Prod.{u2, u2} M (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))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Localization.r.{u2} M _inst_1 S) (Prod.mk.{u2, u2} M (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)) a₁ a₂) (Prod.mk.{u2, u2} M (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)) b₁ b₂))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq' Submonoid.LocalizationMap.eq'ₓ'. -/
 @[to_additive]
 protected theorem eq' {a₁ b₁} {a₂ b₂ : S} :
@@ -1178,10 +1094,7 @@ theorem mk'_eq_iff_mk'_eq (g : LocalizationMap S P) {x₁ x₂} {y₁ y₂ : S}
 #align add_submonoid.localization_map.mk'_eq_iff_mk'_eq AddSubmonoid.LocalizationMap.mk'_eq_iff_mk'_eq
 
 /- warning: submonoid.localization_map.exists_of_sec_mk' -> Submonoid.LocalizationMap.exists_of_sec_mk' is a dubious translation:
-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) (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), Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)))) x)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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) (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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)), Exists.{succ u2} (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)) (fun (c : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)))) x)) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.exists_of_sec_mk' Submonoid.LocalizationMap.exists_of_sec_mk'ₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, for all `x₁ : M` and `y₁ ∈ S`,
 if `x₂ : M, y₂ ∈ S` are such that `f x₁ * (f y₁)⁻¹ * f y₂ = f x₂`, then there exists `c ∈ S`
@@ -1195,10 +1108,7 @@ theorem exists_of_sec_mk' (x) (y : S) :
 #align add_submonoid.localization_map.exists_of_sec_mk' AddSubmonoid.LocalizationMap.exists_of_sec_mk'
 
 /- warning: submonoid.localization_map.mk'_eq_of_eq -> Submonoid.LocalizationMap.mk'_eq_of_eq is a dubious translation:
-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) {a₁ : M} {b₁ : M} {a₂ : 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} {b₂ : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) a₂) b₁) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) b₂) a₁)) -> (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f a₁ a₂) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f b₁ b₂))
-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) {a₁ : M} {b₁ : M} {a₂ : 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)} {b₂ : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) a₂) b₁) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) b₂) a₁)) -> (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f a₁ a₂) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f b₁ b₂))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_of_eq Submonoid.LocalizationMap.mk'_eq_of_eqₓ'. -/
 @[to_additive]
 theorem mk'_eq_of_eq {a₁ b₁ : M} {a₂ b₂ : S} (H : ↑a₂ * b₁ = ↑b₂ * a₁) :
@@ -1208,10 +1118,7 @@ theorem mk'_eq_of_eq {a₁ b₁ : M} {a₂ b₂ : S} (H : ↑a₂ * b₁ = ↑b
 #align add_submonoid.localization_map.mk'_eq_of_eq AddSubmonoid.LocalizationMap.mk'_eq_of_eq
 
 /- warning: submonoid.localization_map.mk'_eq_of_eq' -> Submonoid.LocalizationMap.mk'_eq_of_eq' is a dubious translation:
-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) {a₁ : M} {b₁ : M} {a₂ : 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} {b₂ : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) b₁ ((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))))) a₂)) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) a₁ ((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))))) b₂))) -> (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f a₁ a₂) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f b₁ b₂))
-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) {a₁ : M} {b₁ : M} {a₂ : 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)} {b₂ : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) b₁ (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)) a₂)) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) a₁ (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)) b₂))) -> (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f a₁ a₂) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f b₁ b₂))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_of_eq' Submonoid.LocalizationMap.mk'_eq_of_eq'ₓ'. -/
 @[to_additive]
 theorem mk'_eq_of_eq' {a₁ b₁ : M} {a₂ b₂ : S} (H : b₁ * ↑a₂ = a₁ * ↑b₂) :
@@ -1292,10 +1199,7 @@ theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
 #align add_submonoid.localization_map.mk'_add_cancel_right AddSubmonoid.LocalizationMap.mk'_add_cancel_right
 
 /- warning: submonoid.localization_map.mk'_mul_cancel_left -> Submonoid.LocalizationMap.mk'_mul_cancel_left is a dubious translation:
-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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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) y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_cancel_left Submonoid.LocalizationMap.mk'_mul_cancel_leftₓ'. -/
 @[to_additive]
 theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := by
@@ -1319,10 +1223,7 @@ theorem isUnit_comp (j : N →* P) (y : S) : IsUnit (j.comp f.toMap y) :=
 variable {g : M →* P}
 
 /- warning: submonoid.localization_map.eq_of_eq -> Submonoid.LocalizationMap.eq_of_eq is a dubious translation:
-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) {g : 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))}, (forall (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), IsUnit.{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))) g ((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))) -> (forall {x : M} {y : M}, (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} P (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))) g x) (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))) g y)))
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) -> (forall {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_of_eq Submonoid.LocalizationMap.eq_of_eqₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g(S) ⊆ units P`, `f x = f y → g x = g y` for all `x y : M`. -/
@@ -1338,10 +1239,7 @@ theorem eq_of_eq (hg : ∀ y : S, IsUnit (g y)) {x y} (h : f.toMap x = f.toMap y
 #align add_submonoid.localization_map.eq_of_eq AddSubmonoid.LocalizationMap.eq_of_eq
 
 /- warning: submonoid.localization_map.comp_eq_of_eq -> Submonoid.LocalizationMap.comp_eq_of_eq is a dubious translation:
-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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (forall (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), 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))) g ((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) -> (forall (k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g 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) {g : 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))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q], (forall (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)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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.2397 : 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))))) g (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) -> (forall (k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (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.2397 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2397 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2397 : 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))))) g y))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.comp_eq_of_eq Submonoid.LocalizationMap.comp_eq_of_eqₓ'. -/
 /-- Given `comm_monoid`s `M, P`, localization maps `f : M →* N, k : P →* Q` for submonoids
 `S, T` respectively, and `g : M →* P` such that `g(S) ⊆ T`, `f x = f y` implies
@@ -1384,10 +1282,7 @@ noncomputable def lift : N →* P
 variable {S g}
 
 /- warning: submonoid.localization_map.lift_mk' -> Submonoid.LocalizationMap.lift_mk' is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : 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 u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g x) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (HasLiftT.mk.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (CoeTCₓ.coe.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (coeBase.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (Units.hasCoe.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Inv.inv.{u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Units.hasInv.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => (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) -> (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.hasCoeToFun.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (IsUnit.liftRight.{u1, u3} (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) P (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u3} P _inst_3) (MonoidHom.restrict.{u1, u3, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) P (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) g S) hg) y))))
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (Units.val.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3) (Inv.inv.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) y) (Units.instInv.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (fun (_x : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulOneClass.toMul.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S))) (MulOneClass.toMul.{u2} (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (IsUnit.liftRight.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) P (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S) (CommMonoid.toMonoid.{u2} P _inst_3) (MonoidHom.restrict.{u3, u2, u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) P (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) g S) hg) y))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk' Submonoid.LocalizationMap.lift_mk'ₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
@@ -1402,10 +1297,7 @@ theorem lift_mk' (x y) : f.lift hg (f.mk' x y) = g x * ↑(IsUnit.liftRight (g.r
 #align add_submonoid.localization_map.lift_mk' AddSubmonoid.LocalizationMap.lift_mk'
 
 /- warning: submonoid.localization_map.lift_spec -> Submonoid.LocalizationMap.lift_spec is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N) (v : P), Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} P (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
-but is expected to have type
-  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec Submonoid.LocalizationMap.lift_specₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v : P`, we have
@@ -1418,10 +1310,7 @@ theorem lift_spec (z v) : f.lift hg z = v ↔ g (f.sec z).1 = g (f.sec z).2 * v
 #align add_submonoid.localization_map.lift_spec AddSubmonoid.LocalizationMap.lift_spec
 
 /- warning: submonoid.localization_map.lift_spec_mul -> Submonoid.LocalizationMap.lift_spec_mul is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N) (w : P) (v : P), Iff (Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
-but is expected to have type
-  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (w : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec_mul Submonoid.LocalizationMap.lift_spec_mulₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v w : P`, we have
@@ -1438,10 +1327,7 @@ theorem lift_spec_mul (z w v) : f.lift hg z * w = v ↔ g (f.sec z).1 * w = g (f
 #align add_submonoid.localization_map.lift_spec_add AddSubmonoid.LocalizationMap.lift_spec_add
 
 /- warning: submonoid.localization_map.lift_mk'_spec -> Submonoid.LocalizationMap.lift_mk'_spec is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : M) (v : P) (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), Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u3} P (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))) g x) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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)) v))
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (v : P) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) v))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk'_spec Submonoid.LocalizationMap.lift_mk'_specₓ'. -/
 @[to_additive]
 theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y * v := by
@@ -1450,10 +1336,7 @@ theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y *
 #align add_submonoid.localization_map.lift_mk'_spec AddSubmonoid.LocalizationMap.lift_mk'_spec
 
 /- warning: submonoid.localization_map.lift_mul_right -> Submonoid.LocalizationMap.lift_mul_right is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N), Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
-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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_right Submonoid.LocalizationMap.lift_mul_rightₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
@@ -1466,10 +1349,7 @@ theorem lift_mul_right (z) : f.lift hg z * g (f.sec z).2 = g (f.sec z).1 :=
 #align add_submonoid.localization_map.lift_add_right AddSubmonoid.LocalizationMap.lift_add_right
 
 /- warning: submonoid.localization_map.lift_mul_left -> Submonoid.LocalizationMap.lift_mul_left is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N), Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
-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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_left Submonoid.LocalizationMap.lift_mul_leftₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
@@ -1482,10 +1362,7 @@ theorem lift_mul_left (z) : g (f.sec z).2 * f.lift hg z = g (f.sec z).1 := by
 #align add_submonoid.localization_map.lift_add_left AddSubmonoid.LocalizationMap.lift_add_left
 
 /- warning: submonoid.localization_map.lift_eq -> Submonoid.LocalizationMap.lift_eq is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (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))) g 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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 : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq Submonoid.LocalizationMap.lift_eqₓ'. -/
 @[simp, to_additive]
 theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
@@ -1494,10 +1371,7 @@ theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
 #align add_submonoid.localization_map.lift_eq AddSubmonoid.LocalizationMap.lift_eq
 
 /- warning: submonoid.localization_map.lift_eq_iff -> Submonoid.LocalizationMap.lift_eq_iff is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : Prod.{u1, u1} M (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)} {y : Prod.{u1, u1} M (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)}, Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (Prod.fst.{u1, u1} M (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) x) (Prod.snd.{u1, u1} M (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) x))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (Prod.fst.{u1, u1} M (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) y) (Prod.snd.{u1, u1} M (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) y)))) (Eq.{succ u3} P (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))) g (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Prod.fst.{u1, u1} M (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) x) ((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))))) (Prod.snd.{u1, u1} M (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) y)))) (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))) g (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Prod.fst.{u1, u1} M (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) y) ((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))))) (Prod.snd.{u1, u1} M (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) x)))))
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) {x : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))} {y : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq_iff Submonoid.LocalizationMap.lift_eq_iffₓ'. -/
 @[to_additive]
 theorem lift_eq_iff {x y : M × S} :
@@ -1548,10 +1422,7 @@ theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a =
 #align add_submonoid.localization_map.epic_of_localization_map AddSubmonoid.LocalizationMap.epic_of_localizationMap
 
 /- warning: submonoid.localization_map.lift_unique -> Submonoid.LocalizationMap.lift_unique is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) {j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (x : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) j (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (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))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) j (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_unique Submonoid.LocalizationMap.lift_uniqueₓ'. -/
 @[to_additive]
 theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg = j :=
@@ -1608,10 +1479,7 @@ theorem lift_left_inverse {k : LocalizationMap S P} (z : N) :
 #align add_submonoid.localization_map.lift_left_inverse AddSubmonoid.LocalizationMap.lift_left_inverse
 
 /- warning: submonoid.localization_map.lift_surjective_iff -> Submonoid.LocalizationMap.lift_surjective_iff is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))), Iff (Function.Surjective.{succ u2, succ u3} N P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) v (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (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))) g (Prod.fst.{u1, u1} M (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) x))))
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Surjective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} P (HMul.hMul.{u2, u2, u2} P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) P (instHMul.{u2} P (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) v (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_surjective_iff Submonoid.LocalizationMap.lift_surjective_iffₓ'. -/
 @[to_additive]
 theorem lift_surjective_iff :
@@ -1632,10 +1500,7 @@ theorem lift_surjective_iff :
 #align add_submonoid.localization_map.lift_surjective_iff AddSubmonoid.LocalizationMap.lift_surjective_iff
 
 /- warning: submonoid.localization_map.lift_injective_iff -> Submonoid.LocalizationMap.lift_injective_iff is a dubious translation:
-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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))), Iff (Function.Injective.{succ u2, succ u3} N P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u3} P (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))) g x) (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))) g y)))
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Injective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_injective_iff Submonoid.LocalizationMap.lift_injective_iffₓ'. -/
 @[to_additive]
 theorem lift_injective_iff :
@@ -1660,10 +1525,7 @@ variable {T : Submonoid P} (hy : ∀ y : S, g y ∈ T) {Q : Type _} [CommMonoid
   (k : LocalizationMap T Q)
 
 /- warning: submonoid.localization_map.map -> Submonoid.LocalizationMap.map is a dubious translation:
-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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (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), 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))) g ((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) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
-but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map Submonoid.LocalizationMap.mapₓ'. -/
 /-- Given a `comm_monoid` homomorphism `g : M →* P` where for submonoids `S ⊆ M, T ⊆ P` we have
 `g(S) ⊆ T`, the induced monoid homomorphism from the localization of `M` at `S` to the
@@ -1680,10 +1542,7 @@ noncomputable def map : N →* Q :=
 variable {k}
 
 /- warning: submonoid.localization_map.map_eq -> Submonoid.LocalizationMap.map_eq is a dubious translation:
-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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} Q (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 g T hy Q _inst_4 k) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g x))
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u4), 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))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, 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))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, 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))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{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.{u3, u2, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_eq Submonoid.LocalizationMap.map_eqₓ'. -/
 @[to_additive]
 theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
@@ -1692,10 +1551,7 @@ theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
 #align add_submonoid.localization_map.map_eq AddSubmonoid.LocalizationMap.map_eq
 
 /- warning: submonoid.localization_map.map_comp -> Submonoid.LocalizationMap.map_comp is a dubious translation:
-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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u1)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.comp.{u1, u2, u4} M N Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (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 g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u1, u3, u4} M P Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) g)
-but is expected to have type
-  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u3)} (MonoidHom.{u4, u3} M Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHom.comp.{u4, u2, u3} M N Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u4, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u4, u1, u3} M P Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u1, u3} P _inst_3 T Q _inst_4 k) g)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp Submonoid.LocalizationMap.map_compₓ'. -/
 @[simp, to_additive]
 theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
@@ -1704,10 +1560,7 @@ theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
 #align add_submonoid.localization_map.map_comp AddSubmonoid.LocalizationMap.map_comp
 
 /- warning: submonoid.localization_map.map_mk' -> Submonoid.LocalizationMap.map_mk' is a dubious translation:
-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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (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 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 g T hy Q _inst_4 k) (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 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))) g 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 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))) g ((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)) (hy y)))
-but is expected to have type
-  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4} (x : M) (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u3} P _inst_3 T Q _inst_4 k (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x) (Subtype.mk.{succ u1} P (fun (x : P) => Membership.mem.{u1, u1} P (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) x T) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (hy y)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mk' Submonoid.LocalizationMap.map_mk'ₓ'. -/
 @[to_additive]
 theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y⟩ :=
@@ -1720,10 +1573,7 @@ theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y
 #align add_submonoid.localization_map.map_mk' AddSubmonoid.LocalizationMap.map_mk'
 
 /- warning: submonoid.localization_map.map_spec -> Submonoid.LocalizationMap.map_spec is a dubious translation:
-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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N) (u : Q), Iff (Eq.{succ u4} Q (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 g T hy Q _inst_4 k) z) u) (Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) u))
-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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u2, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (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)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (z : N) (u : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z), Iff (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u2, u3, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) u) (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) u))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_spec Submonoid.LocalizationMap.map_specₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1737,10 +1587,7 @@ theorem map_spec (z u) : f.map hy k z = u ↔ k.toMap (g (f.sec z).1) = k.toMap
 #align add_submonoid.localization_map.map_spec AddSubmonoid.LocalizationMap.map_spec
 
 /- warning: submonoid.localization_map.map_mul_right -> Submonoid.LocalizationMap.map_mul_right is a dubious translation:
-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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} Q (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (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 g T hy Q _inst_4 k) z) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z)))))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_right Submonoid.LocalizationMap.map_mul_rightₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1754,10 +1601,7 @@ theorem map_mul_right (z) : f.map hy k z * k.toMap (g (f.sec z).2) = k.toMap (g
 #align add_submonoid.localization_map.map_add_right AddSubmonoid.LocalizationMap.map_add_right
 
 /- warning: submonoid.localization_map.map_mul_left -> Submonoid.LocalizationMap.map_mul_left is a dubious translation:
-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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} Q (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (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 g T hy Q _inst_4 k) z)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z)) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_left Submonoid.LocalizationMap.map_mul_leftₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1771,10 +1615,7 @@ theorem map_mul_left (z) : k.toMap (g (f.sec z).2) * f.map hy k z = k.toMap (g (
 #align add_submonoid.localization_map.map_add_left AddSubmonoid.LocalizationMap.map_add_left
 
 /- warning: submonoid.localization_map.map_id -> Submonoid.LocalizationMap.map_id is a dubious translation:
-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) (z : N), Eq.{succ u2} N (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => N -> N) (MonoidHom.hasCoeToFun.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (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.{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)))) (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) (MonoidHom.hasCoeToFun.{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.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) ((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)) S) => this) (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)) N _inst_2 f) z) z
-but is expected to have type
-  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) (z : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => N) z) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (fun (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => M) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (FunLike.coe.{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) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => M) _x) (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.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{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))))) (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) S) => this) (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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y)]) N _inst_2 f) z) z
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_id Submonoid.LocalizationMap.map_idₓ'. -/
 @[simp, to_additive]
 theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f z = z :=
@@ -1783,10 +1624,7 @@ theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f
 #align add_submonoid.localization_map.map_id AddSubmonoid.LocalizationMap.map_id
 
 /- warning: submonoid.localization_map.map_comp_map -> Submonoid.LocalizationMap.map_comp_map is a dubious translation:
-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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {A : Type.{u5}} [_inst_5 : CommMonoid.{u5} A] {U : Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} {R : Type.{u6}} [_inst_6 : CommMonoid.{u6} R] (j : Submonoid.LocalizationMap.{u5, u6} A _inst_5 U R _inst_6) {l : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} (hl : forall (w : coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T), Membership.Mem.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u3), max (succ u3) (succ u5)} (MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => P -> A) (MonoidHom.hasCoeToFun.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) l ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (HasLiftT.mk.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (CoeTCₓ.coe.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeBase.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeSubtype.{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))))) w)) U), Eq.{max (succ u6) (succ u2)} (MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (MonoidHom.comp.{u2, u4, u6} N Q R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6)) (Submonoid.LocalizationMap.map.{u3, u4, u5, u6} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u2, u3, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u2, u5, u6} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) U (fun (x : 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.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u1), max (succ u1) (succ u5)} (MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => M -> A) (MonoidHom.hasCoeToFun.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) ((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))))) x)) U) => this) (hl (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 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))) g ((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))))) x)) (hy x)))) R _inst_6 j)
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U), Eq.{max (succ u3) (succ u5)} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHom.comp.{u3, u2, u5} N Q R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp_map Submonoid.LocalizationMap.map_comp_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
@@ -1808,10 +1646,7 @@ theorem map_comp_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMono
 #align add_submonoid.localization_map.map_comp_map AddSubmonoid.LocalizationMap.map_comp_map
 
 /- warning: submonoid.localization_map.map_map -> Submonoid.LocalizationMap.map_map is a dubious translation:
-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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {A : Type.{u5}} [_inst_5 : CommMonoid.{u5} A] {U : Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} {R : Type.{u6}} [_inst_6 : CommMonoid.{u6} R] (j : Submonoid.LocalizationMap.{u5, u6} A _inst_5 U R _inst_6) {l : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} (hl : forall (w : coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T), Membership.Mem.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u3), max (succ u3) (succ u5)} (MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => P -> A) (MonoidHom.hasCoeToFun.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) l ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (HasLiftT.mk.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (CoeTCₓ.coe.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeBase.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeSubtype.{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))))) w)) U) (x : N), Eq.{succ u6} R (coeFn.{max (succ u6) (succ u4), max (succ u4) (succ u6)} (MonoidHom.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (fun (_x : MonoidHom.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) => Q -> R) (MonoidHom.hasCoeToFun.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (Submonoid.LocalizationMap.map.{u3, u4, u5, u6} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (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 g T hy Q _inst_4 k) x)) (coeFn.{max (succ u6) (succ u2), max (succ u2) (succ u6)} (MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (fun (_x : MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) => N -> R) (MonoidHom.hasCoeToFun.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (Submonoid.LocalizationMap.map.{u1, u2, u5, u6} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) U (fun (x : 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.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u1), max (succ u1) (succ u5)} (MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => M -> A) (MonoidHom.hasCoeToFun.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) ((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))))) x)) U) => this) (hl (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 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))) g ((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))))) x)) (hy x)))) R _inst_6 j) x)
-but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U) (x : N), Eq.{succ u5} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => R) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u2) (succ u5), succ u2, succ u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => R) _x) (MulHomClass.toFunLike.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u3) (succ u5), succ u3, succ u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => R) _x) (MulHomClass.toFunLike.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_map Submonoid.LocalizationMap.map_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
@@ -1867,10 +1702,7 @@ noncomputable def AwayMap.lift (hg : IsUnit (g x)) : N →* P :=
 #align submonoid.localization_map.away_map.lift Submonoid.LocalizationMap.AwayMap.lift
 
 /- warning: submonoid.localization_map.away_map.lift_eq -> Submonoid.LocalizationMap.AwayMap.lift_eq is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) (hg : IsUnit.{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))) g x)) (a : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) N _inst_2 F) a)) (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))) g a)
-but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)) (a : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g a)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift_eq Submonoid.LocalizationMap.AwayMap.lift_eqₓ'. -/
 @[simp]
 theorem AwayMap.lift_eq (hg : IsUnit (g x)) (a : M) : F.lift x hg (F.toMap a) = g a :=
@@ -1945,10 +1777,7 @@ noncomputable def AwayMap.lift (hg : IsAddUnit (g x)) : B →+ C :=
 #align add_submonoid.localization_map.away_map.lift AddSubmonoid.LocalizationMap.AwayMap.lift
 
 /- warning: add_submonoid.localization_map.away_map.lift_eq -> AddSubmonoid.LocalizationMap.AwayMap.lift_eq is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => A -> C) (AddMonoidHom.hasCoeToFun.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) g x)) (a : A), Eq.{succ u3} C (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => B -> C) (AddMonoidHom.hasCoeToFun.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} A B (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5))) (fun (_x : AddMonoidHom.{u1, u2} A B (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5))) => A -> B) (AddMonoidHom.hasCoeToFun.{u1, u2} A B (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5))) (AddSubmonoid.LocalizationMap.toMap.{u1, u2} A _inst_4 (AddSubmonoid.multiples.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4) x) B _inst_5 F) a)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => A -> C) (AddMonoidHom.hasCoeToFun.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) g a)
-but is expected to have type
-  forall {A : Type.{u2}} [_inst_4 : AddCommMonoid.{u2} A] (x : A) {B : Type.{u1}} [_inst_5 : AddCommMonoid.{u1} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u2, u1} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) (AddCommMonoid.toAddMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) _inst_6) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) _x) (AddHomClass.toFunLike.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g x)) (a : A), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : B) => C) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A (fun (a : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => B) a) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u1} B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoidHom.addMonoidHomClass.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))))) (AddSubmonoid.LocalizationMap.toMap.{u2, u1} A _inst_4 (AddSubmonoid.multiples.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4) x) B _inst_5 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (AddMonoidHom.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : B) => C) _x) (AddHomClass.toFunLike.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) B C (AddZeroClass.toAdd.{u1} B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => B) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u1} B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoidHom.addMonoidHomClass.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))))) (AddSubmonoid.LocalizationMap.toMap.{u2, u1} A _inst_4 (AddSubmonoid.multiples.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4) x) B _inst_5 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) _x) (AddHomClass.toFunLike.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g a)
+<too large>
 Case conversion may be inaccurate. Consider using '#align add_submonoid.localization_map.away_map.lift_eq AddSubmonoid.LocalizationMap.AwayMap.lift_eqₓ'. -/
 @[simp]
 theorem AwayMap.lift_eq (hg : IsAddUnit (g x)) (a : A) : F.lift x hg (F.toMap a) = g a :=
@@ -2251,10 +2080,7 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
 #align add_submonoid.localization_map.of_add_equiv_of_dom AddSubmonoid.LocalizationMap.ofAddEquivOfDom
 
 /- warning: submonoid.localization_map.of_mul_equiv_of_dom_apply -> Submonoid.LocalizationMap.ofMulEquivOfDom_apply is a dubious translation:
-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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) (x : P), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (fun (_x : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) => P -> M) (MulEquiv.hasCoeToFun.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : P), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => M) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) k x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_apply Submonoid.LocalizationMap.ofMulEquivOfDom_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -2277,10 +2103,7 @@ theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.toMonoidHom = S) :
 #align add_submonoid.localization_map.of_add_equiv_of_dom_eq AddSubmonoid.LocalizationMap.ofAddEquivOfDom_eq
 
 /- warning: submonoid.localization_map.of_mul_equiv_of_dom_comp_symm -> Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symm is a dubious translation:
-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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (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)))) (MulEquiv.symm.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) k) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp_symm Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symmₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -2290,10 +2113,7 @@ theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (
 #align add_submonoid.localization_map.of_add_equiv_of_dom_comp_symm AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp_symm
 
 /- warning: submonoid.localization_map.of_mul_equiv_of_dom_comp -> Submonoid.LocalizationMap.ofMulEquivOfDom_comp is a dubious translation:
-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))} {k : 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 u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.symm.{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))) k)) T) S) (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{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))) k) H)) (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)))) k x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
-but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.map.{u2, u3, max u3 u2} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k)) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) H)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp Submonoid.LocalizationMap.ofMulEquivOfDom_compₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) (x) :
@@ -2303,10 +2123,7 @@ theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) (
 #align add_submonoid.localization_map.of_add_equiv_of_dom_comp AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp
 
 /- warning: submonoid.localization_map.of_mul_equiv_of_dom_id -> Submonoid.LocalizationMap.ofMulEquivOfDom_id is a dubious translation:
-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.15863.15871 : 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.15884 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15884 (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.2397 : 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.15884) 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.2397 : 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.15884) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15888 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15889 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15884) (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.2397 : 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.15884) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15888) => 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.15888 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.2397 : 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.2397 : 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.2397 : 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
+<too large>
 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."]
@@ -2337,10 +2154,7 @@ noncomputable def mulEquivOfMulEquiv (k : LocalizationMap T Q) {j : M ≃* P}
 #align add_submonoid.localization_map.add_equiv_of_add_equiv AddSubmonoid.LocalizationMap.addEquivOfAddEquiv
 
 /- warning: submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map_apply -> Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map_apply is a dubious translation:
-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.2397 : 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.2397 : 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.2397 : 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.16073 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16074 : 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.16073) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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.2397 : 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.16073) (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)
+<too large>
 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}
@@ -2352,10 +2166,7 @@ theorem mulEquivOfMulEquiv_eq_map_apply {k : LocalizationMap T Q} {j : M ≃* P}
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map_apply AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map_apply
 
 /- warning: submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map -> Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map is a dubious translation:
-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.2397 : 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.2397 : 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.16171 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16172 : 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.16171) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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.2397 : 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.16171) (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)
+<too large>
 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}
@@ -2367,10 +2178,7 @@ theorem mulEquivOfMulEquiv_eq_map {k : LocalizationMap T Q} {j : M ≃* P}
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map
 
 /- warning: submonoid.localization_map.mul_equiv_of_mul_equiv_eq -> Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq is a dubious translation:
-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), 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) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{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))
-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), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq Submonoid.LocalizationMap.mulEquivOfMulEquiv_eqₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T)
@@ -2380,10 +2188,7 @@ theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.ma
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_eq AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq
 
 /- warning: submonoid.localization_map.mul_equiv_of_mul_equiv_mk' -> Submonoid.LocalizationMap.mulEquivOfMulEquiv_mk' is a dubious translation:
-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.16355 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16356 : 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.16355) => 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.16355) (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)))
+<too large>
 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)
@@ -2394,10 +2199,7 @@ theorem mulEquivOfMulEquiv_mk' {k : LocalizationMap T Q} {j : M ≃* P} (H : S.m
 #align add_submonoid.localization_map.add_equiv_of_add_equiv_mk' AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_mk'
 
 /- warning: submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply -> Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_apply is a dubious translation:
-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), Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u1), max (succ u1) (succ u4)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => M -> Q) (MonoidHom.hasCoeToFun.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u1, u4} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u4} M _inst_1 S N _inst_2 Q _inst_4 f (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 u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{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))
-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), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Q) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u3} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u2, u1, u3} M _inst_1 S N _inst_2 Q _inst_4 f (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 u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_applyₓ'. -/
 @[simp, to_additive]
 theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
@@ -2408,10 +2210,7 @@ theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
 #align add_submonoid.localization_map.of_add_equiv_of_add_equiv_apply AddSubmonoid.LocalizationMap.of_addEquivOfAddEquiv_apply
 
 /- warning: submonoid.localization_map.of_mul_equiv_of_mul_equiv -> Submonoid.LocalizationMap.of_mulEquivOfMulEquiv is a dubious translation:
-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 u1)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u1, u4} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u4} M _inst_1 S N _inst_2 Q _inst_4 f (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))) (MonoidHom.comp.{u1, u3, u4} M P Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))
-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 u2) (succ u3)} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u2, u3} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u2, u1, u3} M _inst_1 S N _inst_2 Q _inst_4 f (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))) (MonoidHom.comp.{u2, u4, u3} M P Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_mul_equiv Submonoid.LocalizationMap.of_mulEquivOfMulEquivₓ'. -/
 @[to_additive]
 theorem of_mulEquivOfMulEquiv {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T) :
@@ -2499,10 +2298,7 @@ theorem mk_eq_monoidOf_mk' : mk = (monoidOf S).mk' :=
 universe u
 
 /- warning: localization.lift_on_mk' -> Localization.liftOn_mk' is a dubious translation:
-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))} {p : Sort.{u2}} (f : M -> (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) -> p) (H : forall {a : M} {c : M} {b : 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} {d : 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}, (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) c d)) -> (Eq.{u2} p (f a b) (f c d))) (a : M) (b : 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.{u2} p (Localization.liftOn.{u1, u2} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) f H) (f a b)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : Sort.{u2}} (f : M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> p) (H : forall {a : M} {c : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)}, (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d)) -> (Eq.{u2} p (f a b) (f c d))) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{u2} p (Localization.liftOn.{u2, u1} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) f H) (f a b)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.lift_on_mk' Localization.liftOn_mk'ₓ'. -/
 @[simp, to_additive]
 theorem liftOn_mk' {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S) :
@@ -2511,10 +2307,7 @@ theorem liftOn_mk' {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S)
 #align add_localization.lift_on_mk' AddLocalization.liftOn_mk'
 
 /- warning: localization.lift_on₂_mk' -> Localization.liftOn₂_mk' is a dubious translation:
-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))} {p : Sort.{u2}} (f : M -> (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 -> (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) -> p) (H : forall {a : M} {a' : M} {b : 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} {b' : 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} {c : M} {c' : M} {d : 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} {d' : 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}, (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) a' b')) -> (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) c d) (Prod.mk.{u1, u1} M (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) c' d')) -> (Eq.{u2} p (f a b c d) (f a' b' c' d'))) (a : M) (c : M) (b : 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) (d : 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.{u2} p (Localization.liftOn₂.{u1, u2} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) c d) f H) (f a b c d)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : Sort.{u2}} (f : M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> p) (H : forall {a : M} {a' : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {b' : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {c : M} {c' : M} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d' : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)}, (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a' b')) -> (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c' d')) -> (Eq.{u2} p (f a b c d) (f a' b' c' d'))) (a : M) (c : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{u2} p (Localization.liftOn₂.{u2, u1} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) c d) f H) (f a b c d)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.lift_on₂_mk' Localization.liftOn₂_mk'ₓ'. -/
 @[simp, to_additive]
 theorem liftOn₂_mk' {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
@@ -2579,10 +2372,7 @@ theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y
 #align add_localization.add_equiv_of_quotient_mk AddLocalization.addEquivOfQuotient_mk
 
 /- warning: localization.mul_equiv_of_quotient_monoid_of -> Localization.mulEquivOfQuotient_monoidOf is a dubious translation:
-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} (x : M), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
-but is expected to have type
-  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} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Localization.{u1} M _inst_1 S) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) (fun (_x : Localization.{u1} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
@@ -2616,10 +2406,7 @@ theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x
 #align add_localization.add_equiv_of_quotient_symm_mk AddLocalization.addEquivOfQuotient_symm_mk
 
 /- warning: localization.mul_equiv_of_quotient_symm_monoid_of -> Localization.mulEquivOfQuotient_symm_monoidOf is a dubious translation:
-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} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
@@ -2772,10 +2559,7 @@ theorem mk_zero (x : S) : mk 0 (x : S) = 0 :=
 #align localization.mk_zero Localization.mk_zero
 
 /- warning: localization.lift_on_zero -> Localization.liftOn_zero is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {p : Type.{u2}} (f : M -> (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) -> p) (H : forall {a : M} {c : M} {b : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S} {d : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S}, (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S)) (Prod.hasMul.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S)) (Prod.hasMul.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) S))) => (Prod.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S)) -> (Prod.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S)) (Prod.hasMul.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) S))) (Localization.r.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) (Prod.mk.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S) a b) (Prod.mk.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S) c d)) -> (Eq.{succ u2} p (f a b) (f c d))), Eq.{succ u2} p (Localization.liftOn.{u1, succ u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S p (OfNat.ofNat.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) 0 (OfNat.mk.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) 0 (Zero.zero.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) (Localization.hasZero.{u1} M _inst_1 S)))) f H) (f (OfNat.ofNat.{u1} M 0 (OfNat.mk.{u1} M 0 (Zero.zero.{u1} M (MulZeroClass.toHasZero.{u1} M (MulZeroOneClass.toMulZeroClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))))) (OfNat.ofNat.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) 1 (OfNat.mk.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) 1 (One.one.{u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) (Submonoid.one.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))) S)))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {p : Type.{u2}} (f : M -> (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)) -> p) (H : forall {a : M} {c : M} {b : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S)} {d : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S)}, (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) S))) (Prod.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S))) => (Prod.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) S))) (Localization.r.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) (Prod.mk.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) x S)) c d)) -> (Eq.{succ u2} p (f a b) (f c d))), Eq.{succ u2} p (Localization.liftOn.{succ u2, u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S p (OfNat.ofNat.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) 0 (Zero.toOfNat0.{u1} (Localization.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S) (Localization.instZeroLocalizationToCommMonoid.{u1} M _inst_1 S))) f H) (f (OfNat.ofNat.{u1} M 0 (Zero.toOfNat0.{u1} M (CommMonoidWithZero.toZero.{u1} M _inst_1))) (OfNat.ofNat.{u1} (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)) (Submonoid.one.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))) S))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.lift_on_zero Localization.liftOn_zeroₓ'. -/
 theorem liftOn_zero {p : Type _} (f : ∀ (x : M) (y : S), p) (H) : liftOn 0 f H = f 0 1 := by
   rw [← mk_zero 1, lift_on_mk]
@@ -2801,10 +2585,7 @@ theorem LocalizationMap.sec_zero_fst {f : LocalizationMap S N} : f.toMap (f.sec
 namespace LocalizationWithZeroMap
 
 /- warning: submonoid.localization_with_zero_map.lift -> Submonoid.LocalizationWithZeroMap.lift is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S), IsUnit.{u3} P (MonoidWithZero.toMonoid.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (fun (_x : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) => M -> P) (MonoidWithZeroHom.hasCoeToFun.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) g ((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 (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S))))) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (MonoidWithZero.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (CommMonoidWithZero.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) _inst_3)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulOneClass.toMul.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (MulOneClass.toMul.{u3} P (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))) (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (MonoidWithZeroHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (MonoidWithZeroHom.monoidWithZeroHomClass.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_with_zero_map.lift Submonoid.LocalizationWithZeroMap.liftₓ'. -/
 /-- Given a localization map `f : M →*₀ N` for a submonoid `S ⊆ M` and a map of
 `comm_monoid_with_zero`s `g : M →*₀ P` such that `g y` is invertible for all `y : S`, the
@@ -2845,10 +2626,7 @@ theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
 #align add_localization.mk_left_injective AddLocalization.mk_left_injective
 
 /- warning: localization.mk_eq_mk_iff' -> Localization.mk_eq_mk_iff' is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s}, Iff (Eq.{succ u1} (Localization.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s))))) a₂) b₁))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))} {a₁ : α} {b₁ : α} {a₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s)} {b₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s)}, Iff (Eq.{succ u1} (Localization.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) s)) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) s)) a₂) b₁))
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'ₓ'. -/
 @[to_additive]
 theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
@@ -2908,10 +2686,7 @@ instance : LT (Localization s) :=
             mul_left_comm ↑b₂, mul_lt_mul_iff_left])⟩
 
 /- warning: localization.mk_le_mk -> Localization.mk_le_mk is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s}, Iff (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) a₂) b₁))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)} {b₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)}, Iff (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) a₂) b₁))
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.mk_le_mk Localization.mk_le_mkₓ'. -/
 @[to_additive]
 theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ :=
@@ -2920,10 +2695,7 @@ theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b
 #align add_localization.mk_le_mk AddLocalization.mk_le_mk
 
 /- warning: localization.mk_lt_mk -> Localization.mk_lt_mk is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s}, Iff (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) a₂) b₁))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)} {b₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)}, Iff (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) a₂) b₁))
+<too large>
 Case conversion may be inaccurate. Consider using '#align localization.mk_lt_mk Localization.mk_lt_mkₓ'. -/
 @[to_additive]
 theorem mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ :=
Diff
@@ -712,7 +712,7 @@ namespace MonoidHom
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (Prod.fst.{u1, u1} M (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) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f y)) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
 but is expected to have type
-  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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f y)) (Exists.{succ u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (fun (c : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
+  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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f y)) (Exists.{succ u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (fun (c : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.to_localization_map MonoidHom.toLocalizationMapₓ'. -/
 /-- Makes a localization map from a `comm_monoid` hom satisfying the characteristic predicate. -/
 @[to_additive
@@ -746,7 +746,7 @@ abbrev toMap (f : LocalizationMap S N) :=
 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} {g : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u1) (succ u2)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) f g)
 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} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g)
+  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} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.ext Submonoid.LocalizationMap.extₓ'. -/
 @[ext, to_additive]
 theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f = g :=
@@ -762,7 +762,7 @@ theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f =
 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} {g : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u1) (succ u2)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 g) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.ext_iff Submonoid.LocalizationMap.ext_iffₓ'. -/
 @[to_additive]
 theorem ext_iff {f g : LocalizationMap S N} : f = g ↔ ∀ x, f.toMap x = g.toMap x :=
@@ -786,7 +786,7 @@ theorem toMap_injective : Function.Injective (@LocalizationMap.toMap _ _ S N _)
 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) (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))
 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) (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))
+  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) (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_units Submonoid.LocalizationMap.map_unitsₓ'. -/
 @[to_additive]
 theorem map_units (f : LocalizationMap S N) (y : S) : IsUnit (f.toMap y) :=
@@ -798,7 +798,7 @@ theorem map_units (f : LocalizationMap S N) (y : S) : IsUnit (f.toMap y) :=
 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) (z : N), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (z : N), Exists.{succ u2} (Prod.{u2, u2} M (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))) (fun (x : Prod.{u2, u2} M (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) x))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) x)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (z : N), Exists.{succ u2} (Prod.{u2, u2} M (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))) (fun (x : Prod.{u2, u2} M (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) x))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) x)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) x)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.surj Submonoid.LocalizationMap.surjₓ'. -/
 @[to_additive]
 theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2 = f.toMap x.1 :=
@@ -810,7 +810,7 @@ theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2
 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) {x : M} {y : M}, Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) (Exists.{succ u2} (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)) (fun (c : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y)))
+  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) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) (Exists.{succ u2} (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)) (fun (c : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_iff_exists Submonoid.LocalizationMap.eq_iff_existsₓ'. -/
 @[to_additive]
 theorem eq_iff_exists (f : LocalizationMap S N) {x y} :
@@ -838,7 +838,7 @@ noncomputable def sec (f : LocalizationMap S N) (z : N) : M × 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} (z : N), Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
 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} (z : N), Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+  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} (z : N), Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_spec Submonoid.LocalizationMap.sec_specₓ'. -/
 @[to_additive]
 theorem sec_spec {f : LocalizationMap S N} (z : N) :
@@ -851,7 +851,7 @@ theorem sec_spec {f : LocalizationMap S N} (z : N) :
 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} (z : N), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) z)
 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} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) z)
+  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} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) z)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_spec' Submonoid.LocalizationMap.sec_spec'ₓ'. -/
 @[to_additive]
 theorem sec_spec' {f : LocalizationMap S N} (z : N) :
@@ -863,7 +863,7 @@ theorem sec_spec' {f : LocalizationMap S N} (z : N) :
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y)))) z) (Eq.{succ u2} N w (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y)))) z) (Eq.{succ u1} N w (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y)))) z) (Eq.{succ u1} N w (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_left Submonoid.LocalizationMap.mul_inv_leftₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `w * (f y)⁻¹ = z ↔ w = f y * z`. -/
@@ -880,7 +880,7 @@ theorem mul_inv_left {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N z (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))))) (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) w)
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N z (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))))) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) w)
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N z (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))))) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) w)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_right Submonoid.LocalizationMap.mul_inv_rightₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `z = w * (f y)⁻¹ ↔ z * f y = w`. -/
@@ -896,7 +896,7 @@ theorem mul_inv_right {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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₁ : M} {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} {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}, Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₁) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₂) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₂))))) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ ((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₂))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₂ ((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₁))))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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₁ : M} {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)} {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)}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₁) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₁) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₂) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₂) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₂))))) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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₁ : M} {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)} {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)}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₁) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₁) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₂) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₂) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₂) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₂))))) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv Submonoid.LocalizationMap.mul_invₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that
 `f(S) ⊆ Nˣ`, for all `x₁ x₂ : M` and `y₁, y₂ ∈ S`, we have
@@ -918,7 +918,7 @@ theorem mul_inv {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {x₁ x₂} {y₁ y
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (hf : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : 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 u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) y)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) z))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))))) z)))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (hf : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) y)) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) z) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) z))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z)))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (hf : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) y)) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) z) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) z))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_inj Submonoid.LocalizationMap.inv_injₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y, z ∈ S`, we have `(f y)⁻¹ = (f z)⁻¹ → f y = f z`. -/
@@ -936,7 +936,7 @@ theorem inv_inj {f : M →* N} (hf : ∀ y : S, IsUnit (f y)) {y z}
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : N}, (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z) (OfNat.ofNat.{u2} N 1 (OfNat.mk.{u2} N 1 (One.one.{u2} N (MulOneClass.toHasOne.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) -> (Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))) z)
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : N}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2))))) -> (Eq.{succ u1} N (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))) z)
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : N}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Monoid.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2))))) -> (Eq.{succ u1} N (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))) z)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_unique Submonoid.LocalizationMap.inv_uniqueₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y ∈ S`, `(f y)⁻¹` is unique. -/
@@ -953,7 +953,7 @@ variable (f : LocalizationMap S N)
 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) {x : M} {y : M} {c : 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 u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) y))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
+  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) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancelₓ'. -/
 @[to_additive]
 theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
@@ -970,7 +970,7 @@ theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
 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) {x : M} {y : M} {c : 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 u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x ((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))))) c))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) y ((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))))) c)))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y (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)) c)))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
+  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) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y (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)) c)))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_left_cancel Submonoid.LocalizationMap.map_left_cancelₓ'. -/
 @[to_additive]
 theorem map_left_cancel {x y} {c : S} (h : f.toMap (x * c) = f.toMap (y * c)) :
@@ -1015,7 +1015,7 @@ theorem mk'_mul (x₁ x₂ : M) (y₁ y₂ : S) : f.mk' (x₁ * x₂) (y₁ * y
 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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_one Submonoid.LocalizationMap.mk'_oneₓ'. -/
 @[to_additive]
 theorem mk'_one (x) : f.mk' x (1 : S) = f.toMap x := by
@@ -1051,7 +1051,7 @@ theorem mk'_surjective (z : N) : ∃ (x : _)(y : S), f.mk' x y = z :=
 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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_spec Submonoid.LocalizationMap.mk'_specₓ'. -/
 @[to_additive]
 theorem mk'_spec (x) (y : S) : f.mk' x y * f.toMap y = f.toMap x :=
@@ -1063,7 +1063,7 @@ theorem mk'_spec (x) (y : S) : f.mk' x y * f.toMap y = f.toMap x :=
 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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_spec' Submonoid.LocalizationMap.mk'_spec'ₓ'. -/
 @[to_additive]
 theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_comm, mk'_spec]
@@ -1074,7 +1074,7 @@ theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_
 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) {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} {z : N}, Iff (Eq.{succ u2} N z (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {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)} {z : N}, Iff (Eq.{succ u1} N z (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {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)} {z : N}, Iff (Eq.{succ u1} N z (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_mk'_iff_mul_eq Submonoid.LocalizationMap.eq_mk'_iff_mul_eqₓ'. -/
 @[to_additive]
 theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.toMap x :=
@@ -1086,7 +1086,7 @@ theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.
 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) {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} {z : N}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))
 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) {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)} {z : N}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))))
+  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) {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)} {z : N}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq_mul Submonoid.LocalizationMap.mk'_eq_iff_eq_mulₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.toMap y := by
@@ -1098,7 +1098,7 @@ theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.
 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) {x₁ : M} {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} {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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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₁)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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₂)))
 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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₂)))
+  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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₂)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq Submonoid.LocalizationMap.mk'_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
@@ -1117,7 +1117,7 @@ theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : 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) {x₁ : M} {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} {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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ ((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₂))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₂ ((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₁))))
 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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
+  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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq' Submonoid.LocalizationMap.mk'_eq_iff_eq'ₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq' {x₁ x₂} {y₁ y₂ : S} :
@@ -1156,7 +1156,7 @@ protected theorem eq' {a₁ b₁} {a₂ b₂ : 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] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 g) x) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 g) y))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) y))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_iff_eq Submonoid.LocalizationMap.eq_iff_eqₓ'. -/
 @[to_additive]
 theorem eq_iff_eq (g : LocalizationMap S P) {x y} : f.toMap x = f.toMap y ↔ g.toMap x = g.toMap y :=
@@ -1247,7 +1247,7 @@ theorem mk'_self (x) (H : x ∈ S) : f.mk' x ⟨x, H⟩ = 1 := by convert mk'_se
 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) (x₁ : M) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ x₂) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (x₁ : M) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
+  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) (x₁ : M) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_mk'_eq_mk'_of_mul Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mulₓ'. -/
 @[to_additive]
 theorem mul_mk'_eq_mk'_of_mul (x₁ x₂) (y : S) : f.toMap x₁ * f.mk' x₂ y = f.mk' (x₁ * x₂) y := by
@@ -1259,7 +1259,7 @@ theorem mul_mk'_eq_mk'_of_mul (x₁ x₂) (y : S) : f.toMap x₁ * f.mk' x₂ y
 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) (x₁ : M) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ x₂) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (x₁ : M) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
+  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) (x₁ : M) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x₁) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_eq_mk'_of_mul Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mulₓ'. -/
 @[to_additive]
 theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁ = f.mk' (x₁ * x₂) y := by
@@ -1271,7 +1271,7 @@ theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁
 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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u1} M 1 (OfNat.mk.{u1} M 1 (One.one.{u1} M (MulOneClass.toHasOne.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M (Monoid.toOne.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
+  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) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M (Monoid.toOne.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_mk'_one_eq_mk' Submonoid.LocalizationMap.mul_mk'_one_eq_mk'ₓ'. -/
 @[to_additive]
 theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
@@ -1283,7 +1283,7 @@ theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
 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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x ((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)) y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_cancel_right Submonoid.LocalizationMap.mk'_mul_cancel_rightₓ'. -/
 @[simp, to_additive]
 theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
@@ -1295,7 +1295,7 @@ theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
 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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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) y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_cancel_left Submonoid.LocalizationMap.mk'_mul_cancel_leftₓ'. -/
 @[to_additive]
 theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := by
@@ -1307,7 +1307,7 @@ theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := b
 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) (j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (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), IsUnit.{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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) ((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))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) (j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) (j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.is_unit_comp Submonoid.LocalizationMap.isUnit_compₓ'. -/
 @[to_additive]
 theorem isUnit_comp (j : N →* P) (y : S) : IsUnit (j.comp f.toMap y) :=
@@ -1322,7 +1322,7 @@ variable {g : 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) {g : 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))}, (forall (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), IsUnit.{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))) g ((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))) -> (forall {x : M} {y : M}, (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} P (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))) g x) (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))) g y)))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) -> (forall {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) -> (forall {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_of_eq Submonoid.LocalizationMap.eq_of_eqₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g(S) ⊆ units P`, `f x = f y → g x = g y` for all `x y : M`. -/
@@ -1341,7 +1341,7 @@ theorem eq_of_eq (hg : ∀ y : S, IsUnit (g y)) {x y} (h : f.toMap x = f.toMap y
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (forall (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), 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))) g ((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) -> (forall (k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g 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) {g : 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))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q], (forall (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)), 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))))) g (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) -> (forall (k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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))))) g y))))
+  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) {g : 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))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q], (forall (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)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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.2397 : 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))))) g (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) -> (forall (k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (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.2397 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2397 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2397 : 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))))) g y))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.comp_eq_of_eq Submonoid.LocalizationMap.comp_eq_of_eqₓ'. -/
 /-- Given `comm_monoid`s `M, P`, localization maps `f : M →* N, k : P →* Q` for submonoids
 `S, T` respectively, and `g : M →* P` such that `g(S) ⊆ T`, `f x = f y` implies
@@ -1360,7 +1360,7 @@ variable (hg : ∀ y : S, IsUnit (g y))
 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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (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), IsUnit.{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))) g ((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))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
 but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
+  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift Submonoid.LocalizationMap.liftₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
@@ -1387,7 +1387,7 @@ variable {S g}
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : 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 u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g x) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (HasLiftT.mk.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (CoeTCₓ.coe.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (coeBase.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (Units.hasCoe.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Inv.inv.{u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Units.hasInv.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => (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) -> (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.hasCoeToFun.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (IsUnit.liftRight.{u1, u3} (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) P (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u3} P _inst_3) (MonoidHom.restrict.{u1, u3, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) P (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) g S) hg) y))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (Units.val.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3) (Inv.inv.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) y) (Units.instInv.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (fun (_x : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulOneClass.toMul.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S))) (MulOneClass.toMul.{u2} (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (IsUnit.liftRight.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) P (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S) (CommMonoid.toMonoid.{u2} P _inst_3) (MonoidHom.restrict.{u3, u2, u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) P (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) g S) hg) y))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (Units.val.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3) (Inv.inv.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) y) (Units.instInv.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (fun (_x : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulOneClass.toMul.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S))) (MulOneClass.toMul.{u2} (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (IsUnit.liftRight.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) P (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S) (CommMonoid.toMonoid.{u2} P _inst_3) (MonoidHom.restrict.{u3, u2, u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) P (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) g S) hg) y))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk' Submonoid.LocalizationMap.lift_mk'ₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
@@ -1405,7 +1405,7 @@ theorem lift_mk' (x y) : f.lift hg (f.mk' x y) = g x * ↑(IsUnit.liftRight (g.r
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N) (v : P), Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} P (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 but is expected to have type
-  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
+  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec Submonoid.LocalizationMap.lift_specₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v : P`, we have
@@ -1421,7 +1421,7 @@ theorem lift_spec (z v) : f.lift hg z = v ↔ g (f.sec z).1 = g (f.sec z).2 * v
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N) (w : P) (v : P), Iff (Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 but is expected to have type
-  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (w : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
+  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (w : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec_mul Submonoid.LocalizationMap.lift_spec_mulₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v w : P`, we have
@@ -1441,7 +1441,7 @@ theorem lift_spec_mul (z w v) : f.lift hg z * w = v ↔ g (f.sec z).1 * w = g (f
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : M) (v : P) (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), Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u3} P (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))) g x) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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)) v))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (v : P) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) v))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (v : P) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) v))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk'_spec Submonoid.LocalizationMap.lift_mk'_specₓ'. -/
 @[to_additive]
 theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y * v := by
@@ -1453,7 +1453,7 @@ theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y *
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N), Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((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)) (CommMonoid.toMonoid.{u3} ((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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+  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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_right Submonoid.LocalizationMap.lift_mul_rightₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
@@ -1469,7 +1469,7 @@ theorem lift_mul_right (z) : f.lift hg z * g (f.sec z).2 = g (f.sec z).1 :=
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N), Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((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)) (CommMonoid.toMonoid.{u3} ((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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u3, u3, u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+  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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_left Submonoid.LocalizationMap.lift_mul_leftₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
@@ -1485,7 +1485,7 @@ theorem lift_mul_left (z) : g (f.sec z).2 * f.lift hg z = g (f.sec z).1 := by
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (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))) g 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((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)) (CommMonoid.toMonoid.{u3} ((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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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 : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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 : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq Submonoid.LocalizationMap.lift_eqₓ'. -/
 @[simp, to_additive]
 theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
@@ -1497,7 +1497,7 @@ theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : Prod.{u1, u1} M (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)} {y : Prod.{u1, u1} M (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)}, Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (Prod.fst.{u1, u1} M (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) x) (Prod.snd.{u1, u1} M (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) x))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (Prod.fst.{u1, u1} M (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) y) (Prod.snd.{u1, u1} M (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) y)))) (Eq.{succ u3} P (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))) g (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Prod.fst.{u1, u1} M (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) x) ((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))))) (Prod.snd.{u1, u1} M (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) y)))) (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))) g (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Prod.fst.{u1, u1} M (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) y) ((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))))) (Prod.snd.{u1, u1} M (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) x)))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) {x : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))} {y : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x)))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) {x : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))} {y : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x)))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq_iff Submonoid.LocalizationMap.lift_eq_iffₓ'. -/
 @[to_additive]
 theorem lift_eq_iff {x y : M × S} :
@@ -1510,7 +1510,7 @@ theorem lift_eq_iff {x y : M × 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] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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.{max (succ u3) (succ u1)} (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.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) g
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHom.comp.{u3, u1, u2} M N P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f)) g
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHom.comp.{u3, u1, u2} M N P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f)) g
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_comp Submonoid.LocalizationMap.lift_compₓ'. -/
 @[simp, to_additive]
 theorem lift_comp : (f.lift hg).comp f.toMap = g := by ext <;> exact f.lift_eq hg _
@@ -1537,7 +1537,7 @@ theorem lift_of_comp (j : N →* P) : f.lift (f.isUnit_comp j) = j :=
 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) {j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (a : M), Eq.{succ u3} P (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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) a) (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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) j k)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (a : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) j k)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (a : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) j k)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.epic_of_localization_map Submonoid.LocalizationMap.epic_of_localizationMapₓ'. -/
 @[to_additive]
 theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a = k.comp f.toMap a) :
@@ -1551,7 +1551,7 @@ theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a =
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) {j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (x : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) j (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (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))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) j (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) j (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_unique Submonoid.LocalizationMap.lift_uniqueₓ'. -/
 @[to_additive]
 theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg = j :=
@@ -1567,7 +1567,7 @@ theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg
 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) (x : N), Eq.{succ u2} N (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => N -> N) (MonoidHom.hasCoeToFun.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x) x
 but is expected to have type
-  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) (x : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => N) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u2, u1} M _inst_1 S N _inst_2 f)) x) x
+  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) (x : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => N) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u2, u1} M _inst_1 S N _inst_2 f)) x) x
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_id Submonoid.LocalizationMap.lift_idₓ'. -/
 @[simp, to_additive]
 theorem lift_id (x) : f.lift f.map_units x = x :=
@@ -1579,7 +1579,7 @@ theorem lift_id (x) : f.lift f.map_units x = x :=
 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} (z : N), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S P _inst_3 k)) z)) z
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) z
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) z
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_left_inverse Submonoid.LocalizationMap.lift_left_inverseₓ'. -/
 /-- Given two localization maps `f : M →* N, k : M →* P` for a submonoid `S ⊆ M`,
 the hom from `P` to `N` induced by `f` is left inverse to the hom from `N` to `P`
@@ -1611,7 +1611,7 @@ theorem lift_left_inverse {k : LocalizationMap S P} (z : N) :
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))), Iff (Function.Surjective.{succ u2, succ u3} N P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) v (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (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))) g (Prod.fst.{u1, u1} M (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) x))))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Surjective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} P (HMul.hMul.{u2, u2, u2} P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) P (instHMul.{u2} P (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) v (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Surjective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} P (HMul.hMul.{u2, u2, u2} P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) P (instHMul.{u2} P (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) v (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_surjective_iff Submonoid.LocalizationMap.lift_surjective_iffₓ'. -/
 @[to_additive]
 theorem lift_surjective_iff :
@@ -1635,7 +1635,7 @@ theorem lift_surjective_iff :
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))), Iff (Function.Injective.{succ u2, succ u3} N P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u3} P (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))) g x) (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))) g y)))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Injective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Injective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_injective_iff Submonoid.LocalizationMap.lift_injective_iffₓ'. -/
 @[to_additive]
 theorem lift_injective_iff :
@@ -1663,7 +1663,7 @@ variable {T : Submonoid P} (hy : ∀ y : S, g y ∈ T) {Q : Type _} [CommMonoid
 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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (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), 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))) g ((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) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
 but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
+  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map Submonoid.LocalizationMap.mapₓ'. -/
 /-- Given a `comm_monoid` homomorphism `g : M →* P` where for submonoids `S ⊆ M, T ⊆ P` we have
 `g(S) ⊆ T`, the induced monoid homomorphism from the localization of `M` at `S` to the
@@ -1683,7 +1683,7 @@ variable {k}
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} Q (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 g T hy Q _inst_4 k) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g x))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u4), 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))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, 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))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, 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))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{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.{u3, u2, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u4), 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))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, 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))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, 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))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{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.{u3, u2, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_eq Submonoid.LocalizationMap.map_eqₓ'. -/
 @[to_additive]
 theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
@@ -1695,7 +1695,7 @@ theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u1)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.comp.{u1, u2, u4} M N Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (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 g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u1, u3, u4} M P Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) g)
 but is expected to have type
-  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u3)} (MonoidHom.{u4, u3} M Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHom.comp.{u4, u2, u3} M N Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u4, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u4, u1, u3} M P Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u1, u3} P _inst_3 T Q _inst_4 k) g)
+  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u3)} (MonoidHom.{u4, u3} M Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHom.comp.{u4, u2, u3} M N Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u4, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u4, u1, u3} M P Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u1, u3} P _inst_3 T Q _inst_4 k) g)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp Submonoid.LocalizationMap.map_compₓ'. -/
 @[simp, to_additive]
 theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
@@ -1707,7 +1707,7 @@ theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (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 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 g T hy Q _inst_4 k) (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 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))) g 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 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))) g ((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)) (hy y)))
 but is expected to have type
-  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4} (x : M) (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} 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 u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u3} P _inst_3 T Q _inst_4 k (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x) (Subtype.mk.{succ u1} P (fun (x : P) => Membership.mem.{u1, u1} P (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) x T) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (hy y)))
+  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4} (x : M) (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u3} P _inst_3 T Q _inst_4 k (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x) (Subtype.mk.{succ u1} P (fun (x : P) => Membership.mem.{u1, u1} P (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) x T) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (hy y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mk' Submonoid.LocalizationMap.map_mk'ₓ'. -/
 @[to_additive]
 theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y⟩ :=
@@ -1723,7 +1723,7 @@ theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N) (u : Q), Iff (Eq.{succ u4} Q (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 g T hy Q _inst_4 k) z) u) (Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) u))
 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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u2, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (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)), Membership.mem.{u1, u1} ((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.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (z : N) (u : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z), Iff (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u2, u3, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) u) (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) u))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u2, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (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)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (z : N) (u : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z), Iff (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u2, u3, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) u) (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) u))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_spec Submonoid.LocalizationMap.map_specₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1740,7 +1740,7 @@ theorem map_spec (z u) : f.map hy k z = u ↔ k.toMap (g (f.sec z).1) = k.toMap
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} Q (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (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 g T hy Q _inst_4 k) z) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z)))))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z)))))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_right Submonoid.LocalizationMap.map_mul_rightₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1757,7 +1757,7 @@ theorem map_mul_right (z) : f.map hy k z * k.toMap (g (f.sec z).2) = k.toMap (g
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} Q (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (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 g T hy Q _inst_4 k) z)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z)) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z)) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_left Submonoid.LocalizationMap.map_mul_leftₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1774,7 +1774,7 @@ theorem map_mul_left (z) : k.toMap (g (f.sec z).2) * f.map hy k z = k.toMap (g (
 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) (z : N), Eq.{succ u2} N (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => N -> N) (MonoidHom.hasCoeToFun.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (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.{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)))) (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) (MonoidHom.hasCoeToFun.{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.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) ((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)) S) => this) (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)) N _inst_2 f) z) z
 but is expected to have type
-  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) (z : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => N) z) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (fun (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (FunLike.coe.{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) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) _x) (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.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{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))))) (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) S) => this) (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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y)]) N _inst_2 f) z) z
+  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) (z : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => N) z) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (fun (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => M) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (FunLike.coe.{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) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => M) _x) (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.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{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))))) (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) S) => this) (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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y)]) N _inst_2 f) z) z
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_id Submonoid.LocalizationMap.map_idₓ'. -/
 @[simp, to_additive]
 theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f z = z :=
@@ -1786,7 +1786,7 @@ theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {A : Type.{u5}} [_inst_5 : CommMonoid.{u5} A] {U : Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} {R : Type.{u6}} [_inst_6 : CommMonoid.{u6} R] (j : Submonoid.LocalizationMap.{u5, u6} A _inst_5 U R _inst_6) {l : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} (hl : forall (w : coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T), Membership.Mem.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u3), max (succ u3) (succ u5)} (MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => P -> A) (MonoidHom.hasCoeToFun.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) l ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (HasLiftT.mk.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (CoeTCₓ.coe.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeBase.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeSubtype.{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))))) w)) U), Eq.{max (succ u6) (succ u2)} (MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (MonoidHom.comp.{u2, u4, u6} N Q R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6)) (Submonoid.LocalizationMap.map.{u3, u4, u5, u6} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u2, u3, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u2, u5, u6} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) U (fun (x : 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.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u1), max (succ u1) (succ u5)} (MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => M -> A) (MonoidHom.hasCoeToFun.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) ((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))))) x)) U) => this) (hl (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 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))) g ((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))))) x)) (hy x)))) R _inst_6 j)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U), Eq.{max (succ u3) (succ u5)} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHom.comp.{u3, u2, u5} N Q R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U), Eq.{max (succ u3) (succ u5)} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHom.comp.{u3, u2, u5} N Q R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp_map Submonoid.LocalizationMap.map_comp_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
@@ -1811,7 +1811,7 @@ theorem map_comp_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMono
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {A : Type.{u5}} [_inst_5 : CommMonoid.{u5} A] {U : Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} {R : Type.{u6}} [_inst_6 : CommMonoid.{u6} R] (j : Submonoid.LocalizationMap.{u5, u6} A _inst_5 U R _inst_6) {l : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} (hl : forall (w : coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T), Membership.Mem.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u3), max (succ u3) (succ u5)} (MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => P -> A) (MonoidHom.hasCoeToFun.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) l ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (HasLiftT.mk.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (CoeTCₓ.coe.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeBase.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeSubtype.{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))))) w)) U) (x : N), Eq.{succ u6} R (coeFn.{max (succ u6) (succ u4), max (succ u4) (succ u6)} (MonoidHom.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (fun (_x : MonoidHom.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) => Q -> R) (MonoidHom.hasCoeToFun.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (Submonoid.LocalizationMap.map.{u3, u4, u5, u6} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (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 g T hy Q _inst_4 k) x)) (coeFn.{max (succ u6) (succ u2), max (succ u2) (succ u6)} (MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (fun (_x : MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) => N -> R) (MonoidHom.hasCoeToFun.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (Submonoid.LocalizationMap.map.{u1, u2, u5, u6} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) U (fun (x : 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.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u1), max (succ u1) (succ u5)} (MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => M -> A) (MonoidHom.hasCoeToFun.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) ((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))))) x)) U) => this) (hl (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 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))) g ((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))))) x)) (hy x)))) R _inst_6 j) x)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U) (x : N), Eq.{succ u5} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => R) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u2) (succ u5), succ u2, succ u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => R) _x) (MulHomClass.toFunLike.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u3) (succ u5), succ u3, succ u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => R) _x) (MulHomClass.toFunLike.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j) x)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U) (x : N), Eq.{succ u5} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => R) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u2) (succ u5), succ u2, succ u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Q) => R) _x) (MulHomClass.toFunLike.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u3) (succ u5), succ u3, succ u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => R) _x) (MulHomClass.toFunLike.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_map Submonoid.LocalizationMap.map_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
@@ -1853,7 +1853,7 @@ noncomputable def AwayMap.invSelf : N :=
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{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))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift Submonoid.LocalizationMap.AwayMap.liftₓ'. -/
 /-- Given `x : M`, a localization map `F : M →* N` away from `x`, and a map of `comm_monoid`s
 `g : M →* P` such that `g x` is invertible, the homomorphism induced from `N` to `P` sending
@@ -1870,7 +1870,7 @@ noncomputable def AwayMap.lift (hg : IsUnit (g x)) : N →* P :=
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) (hg : IsUnit.{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))) g x)) (a : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) N _inst_2 F) a)) (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))) g a)
 but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)) (a : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g a)
+  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)) (a : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g a)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift_eq Submonoid.LocalizationMap.AwayMap.lift_eqₓ'. -/
 @[simp]
 theorem AwayMap.lift_eq (hg : IsUnit (g x)) (a : M) : F.lift x hg (F.toMap a) = g a :=
@@ -1881,7 +1881,7 @@ theorem AwayMap.lift_eq (hg : IsUnit (g x)) (a : M) : F.lift x hg (F.toMap a) =
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) (hg : IsUnit.{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))) g x)), Eq.{max (succ u3) (succ u1)} (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.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) N _inst_2 F)) g
 but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.comp.{u2, u1, u3} M N P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F)) g
+  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.comp.{u2, u1, u3} M N P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F)) g
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift_comp Submonoid.LocalizationMap.AwayMap.lift_compₓ'. -/
 @[simp]
 theorem AwayMap.lift_comp (hg : IsUnit (g x)) : (F.lift x hg).comp F.toMap = g :=
@@ -2014,7 +2014,7 @@ noncomputable def mulEquivOfLocalizations (k : LocalizationMap S P) : N ≃* 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u3} P (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k) x) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S P _inst_3 k)) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
@@ -2027,7 +2027,7 @@ theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (MulEquiv.symm.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (MulEquiv.symm.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_symm_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_symm_apply {k : LocalizationMap S P} {x} :
@@ -2073,7 +2073,7 @@ def ofMulEquivOfLocalizations (k : N ≃* P) : LocalizationMap S 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : M), Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) k (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.ofMulEquivOfLocalizations_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
@@ -2099,7 +2099,7 @@ theorem ofMulEquivOfLocalizations_eq {k : N ≃* 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_applyₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
@@ -2112,7 +2112,7 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
 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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) k (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) k (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) a) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) k (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply'ₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
@@ -2125,7 +2125,7 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} {x : M} {y : P}, Iff (Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) y))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} {x : M} {y : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) y))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} {x : M} {y : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
@@ -2151,7 +2151,7 @@ theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_applyₓ'. -/
 @[simp, to_additive add_equiv_of_localizations_right_inv_apply]
 theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
@@ -2254,7 +2254,7 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
 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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) (x : P), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (fun (_x : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) => P -> M) (MulEquiv.hasCoeToFun.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : P), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => M) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : P), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => M) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) k x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_apply Submonoid.LocalizationMap.ofMulEquivOfDom_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -2280,7 +2280,7 @@ theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.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] {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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (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)))) (MulEquiv.symm.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) k) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp_symm Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symmₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -2293,7 +2293,7 @@ theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.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] {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))} {k : 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 u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.symm.{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))) k)) T) S) (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{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))) k) H)) (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)))) k x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.map.{u2, u3, max u3 u2} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k)) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) H)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.map.{u2, u3, max u3 u2} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k)) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) H)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp Submonoid.LocalizationMap.ofMulEquivOfDom_compₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) (x) :
@@ -2306,7 +2306,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.15863.15871 : 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.15884 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15884 (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.15884) 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.15884) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15888 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15889 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15884) (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.15884) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15888) => 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.15888 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.15863.15871 : 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.15884 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15884 (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.2397 : 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.15884) 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.2397 : 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.15884) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15888 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15889 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15884) (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.2397 : 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.15884) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15888) => 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.15888 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.2397 : 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.2397 : 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.2397 : 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."]
@@ -2340,7 +2340,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.16073 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16074 : 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.16073) => 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.16073) (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.2397 : 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.2397 : 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.2397 : 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.16073 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16074 : 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.16073) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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.2397 : 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.16073) (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}
@@ -2355,7 +2355,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.16171 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16172 : 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.16171) => 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.16171) (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.2397 : 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.2397 : 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.16171 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16172 : 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.16171) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : 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.2397 : 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.16171) (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}
@@ -2370,7 +2370,7 @@ theorem mulEquivOfMulEquiv_eq_map {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 : M), 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) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{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))
 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), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
+  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), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq Submonoid.LocalizationMap.mulEquivOfMulEquiv_eqₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T)
@@ -2397,7 +2397,7 @@ theorem mulEquivOfMulEquiv_mk' {k : LocalizationMap T Q} {j : M ≃* P} (H : S.m
 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), Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u1), max (succ u1) (succ u4)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => M -> Q) (MonoidHom.hasCoeToFun.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u1, u4} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u4} M _inst_1 S N _inst_2 Q _inst_4 f (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 u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{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))
 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), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Q) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u3} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u2, u1, u3} M _inst_1 S N _inst_2 Q _inst_4 f (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 u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
+  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), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Q) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u3} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u2, u1, u3} M _inst_1 S N _inst_2 Q _inst_4 f (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 u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_applyₓ'. -/
 @[simp, to_additive]
 theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
@@ -2458,7 +2458,7 @@ variable {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))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mk_one_eq_monoid_of_mk Localization.mk_one_eq_monoidOf_mkₓ'. -/
 @[to_additive]
 theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x :=
@@ -2546,7 +2546,7 @@ variable {f}
 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} (x : Localization.{u1} M _inst_1 S), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (Localization.{u1} M _inst_1 S) -> N) (MonoidHom.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u1, u2} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u1} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : Localization.{u2} M _inst_1 S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Localization.{u2} M _inst_1 S) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u2, u2, u1} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u2} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : Localization.{u2} M _inst_1 S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : Localization.{u2} M _inst_1 S) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u2, u2, u1} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u2} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_apply Localization.mulEquivOfQuotient_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lift f.map_units x :=
@@ -2582,7 +2582,7 @@ theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y
 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} (x : M), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) (fun (_x : Localization.{u1} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Localization.{u1} M _inst_1 S) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) (fun (_x : Localization.{u1} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
@@ -2619,7 +2619,7 @@ theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x
 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} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
@@ -2791,7 +2791,7 @@ namespace Submonoid
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {f : Submonoid.LocalizationMap.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)}, Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.toMap.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2) f) (Prod.fst.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S) (Submonoid.LocalizationMap.sec.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2) f (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (MulZeroClass.toHasZero.{u2} N (MulZeroOneClass.toMulZeroClass.{u2} N (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)))))))))) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (MulZeroClass.toHasZero.{u2} N (MulZeroOneClass.toMulZeroClass.{u2} N (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)))))))
 but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoidWithZero.{u2} M] {S : Submonoid.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M (MonoidWithZero.toMulZeroOneClass.{u2} M (CommMonoidWithZero.toMonoidWithZero.{u2} M _inst_1)))} {N : Type.{u1}} [_inst_2 : CommMonoidWithZero.{u1} N] {f : Submonoid.LocalizationMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2))) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) _inst_2)))
+  forall {M : Type.{u2}} [_inst_1 : CommMonoidWithZero.{u2} M] {S : Submonoid.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M (MonoidWithZero.toMulZeroOneClass.{u2} M (CommMonoidWithZero.toMonoidWithZero.{u2} M _inst_1)))} {N : Type.{u1}} [_inst_2 : CommMonoidWithZero.{u1} N] {f : Submonoid.LocalizationMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2))) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_zero_fst Submonoid.LocalizationMap.sec_zero_fstₓ'. -/
 @[simp]
 theorem LocalizationMap.sec_zero_fst {f : LocalizationMap S N} : f.toMap (f.sec 0).fst = 0 := by
@@ -2804,7 +2804,7 @@ namespace LocalizationWithZeroMap
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S), IsUnit.{u3} P (MonoidWithZero.toMonoid.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (fun (_x : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) => M -> P) (MonoidWithZeroHom.hasCoeToFun.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) g ((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 (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S))))) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (MonoidWithZero.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (CommMonoidWithZero.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) _inst_3)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulOneClass.toMul.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (MulOneClass.toMul.{u3} P (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))) (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (MonoidWithZeroHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (MonoidWithZeroHom.monoidWithZeroHomClass.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (MonoidWithZero.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (CommMonoidWithZero.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) _inst_3)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulOneClass.toMul.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (MulOneClass.toMul.{u3} P (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))) (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (MonoidWithZeroHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (MonoidWithZeroHom.monoidWithZeroHomClass.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_with_zero_map.lift Submonoid.LocalizationWithZeroMap.liftₓ'. -/
 /-- Given a localization map `f : M →*₀ N` for a submonoid `S ⊆ M` and a map of
 `comm_monoid_with_zero`s `g : M →*₀ P` such that `g y` is invertible for all `y : S`, the
Diff
@@ -2909,7 +2909,7 @@ instance : LT (Localization s) :=
 
 /- warning: localization.mk_le_mk -> Localization.mk_le_mk is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s}, Iff (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) a₂) b₁))
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s}, Iff (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) a₂) b₁))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)} {b₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)}, Iff (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) a₂) b₁))
 Case conversion may be inaccurate. Consider using '#align localization.mk_le_mk Localization.mk_le_mkₓ'. -/
@@ -2921,7 +2921,7 @@ theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b
 
 /- warning: localization.mk_lt_mk -> Localization.mk_lt_mk is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s}, Iff (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) a₂) b₁))
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s}, Iff (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) a₂) b₁))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)} {b₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)}, Iff (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) a₂) b₁))
 Case conversion may be inaccurate. Consider using '#align localization.mk_lt_mk Localization.mk_lt_mkₓ'. -/
@@ -2973,7 +2973,7 @@ instance : OrderedCancelCommMonoid (Localization s) :=
 
 /- warning: localization.decidable_le -> Localization.decidableLE is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s))
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19599 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19601 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19599 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19601)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19624 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19626 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19624 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19626)
 Case conversion may be inaccurate. Consider using '#align localization.decidable_le Localization.decidableLEₓ'. -/
@@ -2986,7 +2986,7 @@ instance decidableLE [DecidableRel ((· ≤ ·) : α → α → Prop)] :
 
 /- warning: localization.decidable_lt -> Localization.decidableLT is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s))
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19683 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19685 : α) => LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19683 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19685)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19708 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19710 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19708 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19710)
 Case conversion may be inaccurate. Consider using '#align localization.decidable_lt Localization.decidableLTₓ'. -/
@@ -2999,7 +2999,7 @@ instance decidableLT [DecidableRel ((· < ·) : α → α → Prop)] :
 
 /- warning: localization.mk_order_embedding -> Localization.mkOrderEmbedding is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))}, (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) -> (OrderEmbedding.{u1, u1} α (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (Localization.hasLe.{u1} α _inst_1 s))
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))}, (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) -> (OrderEmbedding.{u1, u1} α (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (Localization.hasLe.{u1} α _inst_1 s))
 but is expected to have type
   forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))}, (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)) -> (OrderEmbedding.{u1, u1} α (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (Localization.le.{u1} α _inst_1 s))
 Case conversion may be inaccurate. Consider using '#align localization.mk_order_embedding Localization.mkOrderEmbeddingₓ'. -/
Diff
@@ -2027,7 +2027,7 @@ theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u1 u2, u2, u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (MulEquiv.symm.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (MulEquiv.symm.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_symm_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_symm_apply {k : LocalizationMap S P} {x} :
@@ -2099,7 +2099,7 @@ theorem ofMulEquivOfLocalizations_eq {k : N ≃* 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_applyₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
@@ -2112,7 +2112,7 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
 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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) k (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) k (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) k (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply'ₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
@@ -2125,7 +2125,7 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} {x : M} {y : P}, Iff (Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) y))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} {x : M} {y : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) y))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} {x : M} {y : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
@@ -2254,7 +2254,7 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
 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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) (x : P), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (fun (_x : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) => P -> M) (MulEquiv.hasCoeToFun.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : P), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => M) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : P), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => M) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) k x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_apply Submonoid.LocalizationMap.ofMulEquivOfDom_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -2594,7 +2594,7 @@ theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toM
 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} (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 u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (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 u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)
+  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} (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 u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_mk' Localization.mulEquivOfQuotient_symm_mk'ₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_mk' (x y) :
@@ -2607,7 +2607,7 @@ theorem mulEquivOfQuotient_symm_mk' (x y) :
 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} (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 u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Localization.mk.{u1} M _inst_1 S x 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (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 u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Localization.mk.{u2} M _inst_1 S x y)
+  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} (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 u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Localization.mk.{u2} M _inst_1 S x y)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_mk Localization.mulEquivOfQuotient_symm_mkₓ'. -/
 @[to_additive]
 theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x y) = mk x y := by
@@ -2619,7 +2619,7 @@ theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x
 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} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
Diff
@@ -151,7 +151,7 @@ quotient is the localization of `M` at `S`, defined as the unique congruence rel
 @[to_additive
       "The congruence relation on `M × S`, `M` an `add_comm_monoid` and `S`\nan `add_submonoid` of `M`, whose quotient is the localization of `M` at `S`, defined as the unique\ncongruence relation on `M × S` such that for any other congruence relation `s` on `M × S` where\nfor all `y ∈ S`, `(0, 0) ∼ (y, y)` under `s`, we have that `(x₁, y₁) ∼ (x₂, y₂)` by `r` implies\n`(x₁, y₁) ∼ (x₂, y₂)` by `s`."]
 def r (S : Submonoid M) : Con (M × S) :=
-  infₛ { c | ∀ y : S, c 1 (y, y) }
+  sInf { c | ∀ y : S, c 1 (y, y) }
 #align localization.r Localization.r
 #align add_localization.r AddLocalization.r
 
@@ -207,8 +207,8 @@ equivalently as an infimum (see `localization.r`) or explicitly
 @[to_additive
       "The additive congruence relation used to localize an `add_comm_monoid` at a\nsubmonoid can be expressed equivalently as an infimum (see `add_localization.r`) or\nexplicitly (see `add_localization.r'`)."]
 theorem r_eq_r' : r S = r' S :=
-  le_antisymm (infₛ_le fun _ => ⟨1, by simp⟩) <|
-    le_infₛ fun b H ⟨p, q⟩ ⟨x, y⟩ ⟨t, ht⟩ =>
+  le_antisymm (sInf_le fun _ => ⟨1, by simp⟩) <|
+    le_sInf fun b H ⟨p, q⟩ ⟨x, y⟩ ⟨t, ht⟩ =>
       by
       rw [← one_mul (p, q), ← one_mul (x, y)]
       refine' b.trans (b.mul (H (t * y)) (b.refl _)) _
Diff
@@ -2306,7 +2306,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.15868.15876 : 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.15889 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15889 (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.15889) 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.15889) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15893 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15894 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15889) (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.15889) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15893) => 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.15893 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.15863.15871 : 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.15884 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15884 (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.15884) 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.15884) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15888 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15889 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15884) (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.15884) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15888) => 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.15888 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."]
@@ -2340,7 +2340,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.16078 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16079 : 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.16078) => 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.16078) (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.16073 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16074 : 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.16073) => 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.16073) (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}
@@ -2355,7 +2355,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.16176 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16177 : 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.16176) => 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.16176) (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.16171 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16172 : 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.16171) => 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.16171) (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}
@@ -2383,7 +2383,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.16360 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16361 : 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.16360) => 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.16360) (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.16355 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16356 : 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.16355) => 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.16355) (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)
@@ -2971,31 +2971,31 @@ instance : OrderedCancelCommMonoid (Localization s) :=
         simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab⊢
         exact le_of_mul_le_mul_left' hab }
 
-/- warning: localization.decidable_le -> Localization.decidableLe is a dubious translation:
+/- warning: localization.decidable_le -> Localization.decidableLE is a dubious translation:
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19604 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19606 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19604 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19606)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19629 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19631 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19629 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19631)
-Case conversion may be inaccurate. Consider using '#align localization.decidable_le Localization.decidableLeₓ'. -/
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19599 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19601 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19599 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19601)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19624 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19626 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19624 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19626)
+Case conversion may be inaccurate. Consider using '#align localization.decidable_le Localization.decidableLEₓ'. -/
 @[to_additive]
-instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
+instance decidableLE [DecidableRel ((· ≤ ·) : α → α → Prop)] :
     DecidableRel ((· ≤ ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_le_mk
-#align localization.decidable_le Localization.decidableLe
-#align add_localization.decidable_le AddLocalization.decidableLe
+#align localization.decidable_le Localization.decidableLE
+#align add_localization.decidable_le AddLocalization.decidableLE
 
-/- warning: localization.decidable_lt -> Localization.decidableLt is a dubious translation:
+/- warning: localization.decidable_lt -> Localization.decidableLT is a dubious translation:
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19688 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19690 : α) => LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19688 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19690)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19713 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19715 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19713 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19715)
-Case conversion may be inaccurate. Consider using '#align localization.decidable_lt Localization.decidableLtₓ'. -/
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19683 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19685 : α) => LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19683 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19685)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19708 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19710 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19708 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19710)
+Case conversion may be inaccurate. Consider using '#align localization.decidable_lt Localization.decidableLTₓ'. -/
 @[to_additive]
-instance decidableLt [DecidableRel ((· < ·) : α → α → Prop)] :
+instance decidableLT [DecidableRel ((· < ·) : α → α → Prop)] :
     DecidableRel ((· < ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_lt_mk
-#align localization.decidable_lt Localization.decidableLt
-#align add_localization.decidable_lt AddLocalization.decidableLt
+#align localization.decidable_lt Localization.decidableLT
+#align add_localization.decidable_lt AddLocalization.decidableLT
 
 /- warning: localization.mk_order_embedding -> Localization.mkOrderEmbedding is a dubious translation:
 lean 3 declaration is
@@ -3027,8 +3027,8 @@ instance [LinearOrderedCancelCommMonoid α] {s : Submonoid α} :
         by
         simp_rw [mk_le_mk]
         exact le_total _ _
-    decidableLe := @Localization.decidableLe α _ _ LE.le.decidable
-    decidableLt := @Localization.decidableLt α _ _ LT.lt.decidable
+    decidableLe := @Localization.decidableLE α _ _ LE.le.decidable
+    decidableLt := @Localization.decidableLT α _ _ LT.lt.decidable
     decidableLt := Localization.decidableEq }
 
 end Localization
Diff
@@ -2306,7 +2306,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.15878.15886 : 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.15899 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15899 (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.15899) 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.15899) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15903 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15904 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15899) (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.15899) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15903) => 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.15903 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.15868.15876 : 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.15889 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15889 (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.15889) 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.15889) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15893 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15894 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15889) (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.15889) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15893) => 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.15893 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."]
@@ -2340,7 +2340,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.16088 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16089 : 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.16088) => 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.16088) (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.16078 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16079 : 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.16078) => 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.16078) (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}
@@ -2355,7 +2355,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.16186 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16187 : 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.16186) => 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.16186) (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.16176 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16177 : 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.16176) => 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.16176) (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}
@@ -2383,7 +2383,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.16370 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16371 : 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.16370) => 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.16370) (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.16360 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16361 : 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.16360) => 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.16360) (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)
@@ -2975,7 +2975,7 @@ instance : OrderedCancelCommMonoid (Localization s) :=
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19618 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19620 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19618 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19620)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19643 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19645 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19643 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19645)
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19604 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19606 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19604 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19606)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19629 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19631 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19629 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19631)
 Case conversion may be inaccurate. Consider using '#align localization.decidable_le Localization.decidableLeₓ'. -/
 @[to_additive]
 instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
@@ -2988,7 +2988,7 @@ instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19702 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19704 : α) => LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19702 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19704)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19727 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19729 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19727 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19729)
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19688 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19690 : α) => LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19688 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19690)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19713 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19715 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19713 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19715)
 Case conversion may be inaccurate. Consider using '#align localization.decidable_lt Localization.decidableLtₓ'. -/
 @[to_additive]
 instance decidableLt [DecidableRel ((· < ·) : α → α → Prop)] :
Diff
@@ -153,7 +153,7 @@ quotient is the localization of `M` at `S`, defined as the unique congruence rel
 def r (S : Submonoid M) : Con (M × S) :=
   infₛ { c | ∀ y : S, c 1 (y, y) }
 #align localization.r Localization.r
-#align add_localization.r addLocalization.r
+#align add_localization.r AddLocalization.r
 
 /- warning: localization.r' -> Localization.r' is a dubious translation:
 lean 3 declaration is
@@ -193,7 +193,7 @@ def r' : Con (M × S) :=
         ac_rfl
       
 #align localization.r' Localization.r'
-#align add_localization.r' addLocalization.r'
+#align add_localization.r' AddLocalization.r'
 
 /- warning: localization.r_eq_r' -> Localization.r_eq_r' is a dubious translation:
 lean 3 declaration is
@@ -216,7 +216,7 @@ theorem r_eq_r' : r S = r' S :=
       dsimp only [Prod.mk_mul_mk, Submonoid.coe_mul] at ht⊢
       simp_rw [mul_assoc, ht, mul_comm y q]
 #align localization.r_eq_r' Localization.r_eq_r'
-#align add_localization.r_eq_r' addLocalization.r_eq_r'
+#align add_localization.r_eq_r' AddLocalization.r_eq_r'
 
 variable {S}
 
@@ -230,18 +230,18 @@ Case conversion may be inaccurate. Consider using '#align localization.r_iff_exi
 theorem r_iff_exists {x y : M × S} : r S x y ↔ ∃ c : S, ↑c * (↑y.2 * x.1) = c * (x.2 * y.1) := by
   rw [r_eq_r' S] <;> rfl
 #align localization.r_iff_exists Localization.r_iff_exists
-#align add_localization.r_iff_exists addLocalization.r_iff_exists
+#align add_localization.r_iff_exists AddLocalization.r_iff_exists
 
 end Localization
 
 #print Localization /-
 /-- The localization of a `comm_monoid` at one of its submonoids (as a quotient type). -/
-@[to_additive addLocalization
+@[to_additive AddLocalization
       "The localization of an `add_comm_monoid` at one\nof its submonoids (as a quotient type)."]
 def Localization :=
   (Localization.r S).Quotient
 #align localization Localization
-#align add_localization addLocalization
+#align add_localization AddLocalization
 -/
 
 namespace Localization
@@ -251,7 +251,7 @@ namespace Localization
 instance inhabited : Inhabited (Localization S) :=
   Con.Quotient.inhabited
 #align localization.inhabited Localization.inhabited
-#align add_localization.inhabited addLocalization.inhabited
+#align add_localization.inhabited AddLocalization.inhabited
 -/
 
 #print Localization.mul /-
@@ -261,7 +261,7 @@ instance inhabited : Inhabited (Localization S) :=
 protected irreducible_def mul : Localization S → Localization S → Localization S :=
   (r S).CommMonoid.mul
 #align localization.mul Localization.mul
-#align add_localization.add addLocalization.add
+#align add_localization.add AddLocalization.add
 -/
 
 @[to_additive]
@@ -275,7 +275,7 @@ instance : Mul (Localization S) :=
 protected irreducible_def one : Localization S :=
   (r S).CommMonoid.one
 #align localization.one Localization.one
-#align add_localization.zero addLocalization.zero
+#align add_localization.zero AddLocalization.zero
 -/
 
 @[to_additive]
@@ -293,7 +293,7 @@ trying to unify some huge recursive definition with itself, but unfolded one ste
 protected irreducible_def npow : ℕ → Localization S → Localization S :=
   (r S).CommMonoid.npow
 #align localization.npow Localization.npow
-#align add_localization.nsmul addLocalization.nsmul
+#align add_localization.nsmul AddLocalization.nsmul
 -/
 
 attribute [local semireducible] Localization.mul Localization.one Localization.npow
@@ -328,7 +328,7 @@ class of `(x, y)` in the localization of `M` at `S`. -/
 def mk (x : M) (y : S) : Localization S :=
   (r S).mk' (x, y)
 #align localization.mk Localization.mk
-#align add_localization.mk addLocalization.mk
+#align add_localization.mk AddLocalization.mk
 
 /- warning: localization.mk_eq_mk_iff -> Localization.mk_eq_mk_iff is a dubious translation:
 lean 3 declaration is
@@ -340,7 +340,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_eq_mk_
 theorem mk_eq_mk_iff {a c : M} {b d : S} : mk a b = mk c d ↔ r S ⟨a, b⟩ ⟨c, d⟩ :=
   (r S).Eq
 #align localization.mk_eq_mk_iff Localization.mk_eq_mk_iff
-#align add_localization.mk_eq_mk_iff addLocalization.mk_eq_mk_iff
+#align add_localization.mk_eq_mk_iff AddLocalization.mk_eq_mk_iff
 
 universe u
 
@@ -368,7 +368,7 @@ def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
       exact H h)
     x
 #align localization.rec Localization.rec
-#align add_localization.rec addLocalization.rec
+#align add_localization.rec AddLocalization.rec
 
 /- warning: localization.rec_on_subsingleton₂ -> Localization.recOnSubsingleton₂ is a dubious translation:
 lean 3 declaration is
@@ -384,7 +384,7 @@ def recOnSubsingleton₂ {r : Localization S → Localization S → Sort u}
   @Quotient.recOnSubsingleton₂' _ _ _ _ r (Prod.rec fun _ _ => Prod.rec fun _ _ => h _ _ _ _) x y
     (Prod.rec fun _ _ => Prod.rec fun _ _ => f _ _ _ _)
 #align localization.rec_on_subsingleton₂ Localization.recOnSubsingleton₂
-#align add_localization.rec_on_subsingleton₂ addLocalization.recOnSubsingleton₂
+#align add_localization.rec_on_subsingleton₂ AddLocalization.recOnSubsingleton₂
 
 /- warning: localization.mk_mul -> Localization.mk_mul is a dubious translation:
 lean 3 declaration is
@@ -396,7 +396,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_mul Lo
 theorem mk_mul (a c : M) (b d : S) : mk a b * mk c d = mk (a * c) (b * d) :=
   rfl
 #align localization.mk_mul Localization.mk_mul
-#align add_localization.mk_add addLocalization.mk_add
+#align add_localization.mk_add AddLocalization.mk_add
 
 /- warning: localization.mk_one -> Localization.mk_one is a dubious translation:
 lean 3 declaration is
@@ -408,7 +408,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_one Lo
 theorem mk_one : mk 1 (1 : S) = 1 :=
   rfl
 #align localization.mk_one Localization.mk_one
-#align add_localization.mk_zero addLocalization.mk_zero
+#align add_localization.mk_zero AddLocalization.mk_zero
 
 /- warning: localization.mk_pow -> Localization.mk_pow is a dubious translation:
 lean 3 declaration is
@@ -420,7 +420,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_pow Lo
 theorem mk_pow (n : ℕ) (a : M) (b : S) : mk a b ^ n = mk (a ^ n) (b ^ n) :=
   rfl
 #align localization.mk_pow Localization.mk_pow
-#align add_localization.mk_nsmul addLocalization.mk_nsmul
+#align add_localization.mk_nsmul AddLocalization.mk_nsmul
 
 /- warning: localization.rec_mk -> Localization.ndrec_mk is a dubious translation:
 lean 3 declaration is
@@ -433,7 +433,7 @@ theorem ndrec_mk {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk
     (b : S) : (rec f H (mk a b) : p (mk a b)) = f a b :=
   rfl
 #align localization.rec_mk Localization.ndrec_mk
-#align add_localization.rec_mk addLocalization.ndrec_mk
+#align add_localization.rec_mk AddLocalization.ndrec_mk
 
 /- warning: localization.lift_on -> Localization.liftOn is a dubious translation:
 lean 3 declaration is
@@ -451,7 +451,7 @@ def liftOn {p : Sort u} (x : Localization S) (f : M → S → p)
     (H : ∀ {a c : M} {b d : S} (h : r S (a, b) (c, d)), f a b = f c d) : p :=
   rec f (fun a c b d h => by rw [eq_rec_constant, H h]) x
 #align localization.lift_on Localization.liftOn
-#align add_localization.lift_on addLocalization.liftOn
+#align add_localization.lift_on AddLocalization.liftOn
 
 /- warning: localization.lift_on_mk -> Localization.liftOn_mk is a dubious translation:
 lean 3 declaration is
@@ -464,7 +464,7 @@ theorem liftOn_mk {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S)
     liftOn (mk a b) f H = f a b :=
   rfl
 #align localization.lift_on_mk Localization.liftOn_mk
-#align add_localization.lift_on_mk addLocalization.liftOn_mk
+#align add_localization.lift_on_mk AddLocalization.liftOn_mk
 
 /- warning: localization.ind -> Localization.ind is a dubious translation:
 lean 3 declaration is
@@ -476,7 +476,7 @@ Case conversion may be inaccurate. Consider using '#align localization.ind Local
 theorem ind {p : Localization S → Prop} (H : ∀ y : M × S, p (mk y.1 y.2)) (x) : p x :=
   rec (fun a b => H (a, b)) (fun _ _ _ _ _ => rfl) x
 #align localization.ind Localization.ind
-#align add_localization.ind addLocalization.ind
+#align add_localization.ind AddLocalization.ind
 
 /- warning: localization.induction_on -> Localization.induction_on is a dubious translation:
 lean 3 declaration is
@@ -488,7 +488,7 @@ Case conversion may be inaccurate. Consider using '#align localization.induction
 theorem induction_on {p : Localization S → Prop} (x) (H : ∀ y : M × S, p (mk y.1 y.2)) : p x :=
   ind H x
 #align localization.induction_on Localization.induction_on
-#align add_localization.induction_on addLocalization.induction_on
+#align add_localization.induction_on AddLocalization.induction_on
 
 /- warning: localization.lift_on₂ -> Localization.liftOn₂ is a dubious translation:
 lean 3 declaration is
@@ -510,7 +510,7 @@ def liftOn₂ {p : Sort u} (x y : Localization S) (f : M → S → M → S → p
   liftOn x (fun a b => liftOn y (f a b) fun c c' d d' hy => H ((r S).refl _) hy) fun a a' b b' hx =>
     induction_on y fun ⟨c, d⟩ => H hx ((r S).refl _)
 #align localization.lift_on₂ Localization.liftOn₂
-#align add_localization.lift_on₂ addLocalization.liftOn₂
+#align add_localization.lift_on₂ AddLocalization.liftOn₂
 
 /- warning: localization.lift_on₂_mk -> Localization.liftOn₂_mk is a dubious translation:
 lean 3 declaration is
@@ -523,7 +523,7 @@ theorem liftOn₂_mk {p : Sort _} (f : M → S → M → S → p) (H) (a c : M)
     liftOn₂ (mk a b) (mk c d) f H = f a b c d :=
   rfl
 #align localization.lift_on₂_mk Localization.liftOn₂_mk
-#align add_localization.lift_on₂_mk addLocalization.liftOn₂_mk
+#align add_localization.lift_on₂_mk AddLocalization.liftOn₂_mk
 
 /- warning: localization.induction_on₂ -> Localization.induction_on₂ is a dubious translation:
 lean 3 declaration is
@@ -536,7 +536,7 @@ theorem induction_on₂ {p : Localization S → Localization S → Prop} (x y)
     (H : ∀ x y : M × S, p (mk x.1 x.2) (mk y.1 y.2)) : p x y :=
   induction_on x fun x => induction_on y <| H x
 #align localization.induction_on₂ Localization.induction_on₂
-#align add_localization.induction_on₂ addLocalization.induction_on₂
+#align add_localization.induction_on₂ AddLocalization.induction_on₂
 
 /- warning: localization.induction_on₃ -> Localization.induction_on₃ is a dubious translation:
 lean 3 declaration is
@@ -549,7 +549,7 @@ theorem induction_on₃ {p : Localization S → Localization S → Localization
     (H : ∀ x y z : M × S, p (mk x.1 x.2) (mk y.1 y.2) (mk z.1 z.2)) : p x y z :=
   induction_on₂ x y fun x y => induction_on z <| H x y
 #align localization.induction_on₃ Localization.induction_on₃
-#align add_localization.induction_on₃ addLocalization.induction_on₃
+#align add_localization.induction_on₃ AddLocalization.induction_on₃
 
 /- warning: localization.one_rel -> Localization.one_rel is a dubious translation:
 lean 3 declaration is
@@ -560,7 +560,7 @@ Case conversion may be inaccurate. Consider using '#align localization.one_rel L
 @[to_additive]
 theorem one_rel (y : S) : r S 1 (y, y) := fun b hb => hb y
 #align localization.one_rel Localization.one_rel
-#align add_localization.zero_rel addLocalization.zero_rel
+#align add_localization.zero_rel AddLocalization.zero_rel
 
 /- warning: localization.r_of_eq -> Localization.r_of_eq is a dubious translation:
 lean 3 declaration is
@@ -572,7 +572,7 @@ Case conversion may be inaccurate. Consider using '#align localization.r_of_eq L
 theorem r_of_eq {x y : M × S} (h : ↑y.2 * x.1 = ↑x.2 * y.1) : r S x y :=
   r_iff_exists.2 ⟨1, by rw [h]⟩
 #align localization.r_of_eq Localization.r_of_eq
-#align add_localization.r_of_eq addLocalization.r_of_eq
+#align add_localization.r_of_eq AddLocalization.r_of_eq
 
 /- warning: localization.mk_self -> Localization.mk_self is a dubious translation:
 lean 3 declaration is
@@ -586,7 +586,7 @@ theorem mk_self (a : S) : mk (a : M) a = 1 := by
   rw [← mk_one, mk_eq_mk_iff]
   exact one_rel a
 #align localization.mk_self Localization.mk_self
-#align add_localization.mk_self addLocalization.mk_self
+#align add_localization.mk_self AddLocalization.mk_self
 
 section Scalar
 
@@ -2449,7 +2449,7 @@ def monoidOf : Submonoid.LocalizationMap S (Localization S) :=
         r_iff_exists.trans <|
           show (∃ c : S, ↑c * (1 * x) = c * (1 * y)) ↔ _ by rw [one_mul, one_mul] }
 #align localization.monoid_of Localization.monoidOf
-#align add_localization.add_monoid_of addLocalization.addMonoidOf
+#align add_localization.add_monoid_of AddLocalization.addMonoidOf
 -/
 
 variable {S}
@@ -2464,7 +2464,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_one_eq
 theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x :=
   rfl
 #align localization.mk_one_eq_monoid_of_mk Localization.mk_one_eq_monoidOf_mk
-#align add_localization.mk_zero_eq_add_monoid_of_mk addLocalization.mk_zero_eq_addMonoidOf_mk
+#align add_localization.mk_zero_eq_add_monoid_of_mk AddLocalization.mk_zero_eq_addMonoidOf_mk
 
 /- warning: localization.mk_eq_monoid_of_mk'_apply -> Localization.mk_eq_monoidOf_mk'_apply is a dubious translation:
 lean 3 declaration is
@@ -2482,7 +2482,7 @@ theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
         show mk x 1 = mk (x * 1) ((1 : S) * 1) by rw [mul_one, mul_one]]
       exact mk_eq_mk_iff.2 (Con.symm _ <| (Localization.r S).mul (Con.refl _ (x, 1)) <| one_rel _)
 #align localization.mk_eq_monoid_of_mk'_apply Localization.mk_eq_monoidOf_mk'_apply
-#align add_localization.mk_eq_add_monoid_of_mk'_apply addLocalization.mk_eq_addMonoidOf_mk'_apply
+#align add_localization.mk_eq_add_monoid_of_mk'_apply AddLocalization.mk_eq_addMonoidOf_mk'_apply
 
 /- warning: localization.mk_eq_monoid_of_mk' -> Localization.mk_eq_monoidOf_mk' is a dubious translation:
 lean 3 declaration is
@@ -2494,7 +2494,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_eq_mon
 theorem mk_eq_monoidOf_mk' : mk = (monoidOf S).mk' :=
   funext fun _ => funext fun _ => mk_eq_monoidOf_mk'_apply _ _
 #align localization.mk_eq_monoid_of_mk' Localization.mk_eq_monoidOf_mk'
-#align add_localization.mk_eq_add_monoid_of_mk' addLocalization.mk_eq_addMonoidOf_mk'
+#align add_localization.mk_eq_add_monoid_of_mk' AddLocalization.mk_eq_addMonoidOf_mk'
 
 universe u
 
@@ -2508,7 +2508,7 @@ Case conversion may be inaccurate. Consider using '#align localization.lift_on_m
 theorem liftOn_mk' {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S) :
     liftOn ((monoidOf S).mk' a b) f H = f a b := by rw [← mk_eq_monoid_of_mk', lift_on_mk]
 #align localization.lift_on_mk' Localization.liftOn_mk'
-#align add_localization.lift_on_mk' addLocalization.liftOn_mk'
+#align add_localization.lift_on_mk' AddLocalization.liftOn_mk'
 
 /- warning: localization.lift_on₂_mk' -> Localization.liftOn₂_mk' is a dubious translation:
 lean 3 declaration is
@@ -2521,7 +2521,7 @@ theorem liftOn₂_mk' {p : Sort _} (f : M → S → M → S → p) (H) (a c : M)
     liftOn₂ ((monoidOf S).mk' a b) ((monoidOf S).mk' c d) f H = f a b c d := by
   rw [← mk_eq_monoid_of_mk', lift_on₂_mk]
 #align localization.lift_on₂_mk' Localization.liftOn₂_mk'
-#align add_localization.lift_on₂_mk' addLocalization.liftOn₂_mk'
+#align add_localization.lift_on₂_mk' AddLocalization.liftOn₂_mk'
 
 variable (f : Submonoid.LocalizationMap S N)
 
@@ -2538,7 +2538,7 @@ the localization of `M` at `S` as a quotient type and `N`. -/
 noncomputable def mulEquivOfQuotient (f : Submonoid.LocalizationMap S N) : Localization S ≃* N :=
   (monoidOf S).mulEquivOfLocalizations f
 #align localization.mul_equiv_of_quotient Localization.mulEquivOfQuotient
-#align add_localization.add_equiv_of_quotient addLocalization.addEquivOfQuotient
+#align add_localization.add_equiv_of_quotient AddLocalization.addEquivOfQuotient
 
 variable {f}
 
@@ -2552,7 +2552,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mul_equiv
 theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lift f.map_units x :=
   rfl
 #align localization.mul_equiv_of_quotient_apply Localization.mulEquivOfQuotient_apply
-#align add_localization.add_equiv_of_quotient_apply addLocalization.addEquivOfQuotient_apply
+#align add_localization.add_equiv_of_quotient_apply AddLocalization.addEquivOfQuotient_apply
 
 /- warning: localization.mul_equiv_of_quotient_mk' -> Localization.mulEquivOfQuotient_mk' is a dubious translation:
 lean 3 declaration is
@@ -2564,7 +2564,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mul_equiv
 theorem mulEquivOfQuotient_mk' (x y) : mulEquivOfQuotient f ((monoidOf S).mk' x y) = f.mk' x y :=
   (monoidOf S).lift_mk' _ _ _
 #align localization.mul_equiv_of_quotient_mk' Localization.mulEquivOfQuotient_mk'
-#align add_localization.add_equiv_of_quotient_mk' addLocalization.addEquivOfQuotient_mk'
+#align add_localization.add_equiv_of_quotient_mk' AddLocalization.addEquivOfQuotient_mk'
 
 /- warning: localization.mul_equiv_of_quotient_mk -> Localization.mulEquivOfQuotient_mk is a dubious translation:
 lean 3 declaration is
@@ -2576,7 +2576,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mul_equiv
 theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y := by
   rw [mk_eq_monoid_of_mk'_apply] <;> exact mul_equiv_of_quotient_mk' _ _
 #align localization.mul_equiv_of_quotient_mk Localization.mulEquivOfQuotient_mk
-#align add_localization.add_equiv_of_quotient_mk addLocalization.addEquivOfQuotient_mk
+#align add_localization.add_equiv_of_quotient_mk AddLocalization.addEquivOfQuotient_mk
 
 /- warning: localization.mul_equiv_of_quotient_monoid_of -> Localization.mulEquivOfQuotient_monoidOf is a dubious translation:
 lean 3 declaration is
@@ -2588,7 +2588,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mul_equiv
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
   (monoidOf S).liftEq _ _
 #align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOf
-#align add_localization.add_equiv_of_quotient_add_monoid_of addLocalization.addEquivOfQuotient_addMonoidOf
+#align add_localization.add_equiv_of_quotient_add_monoid_of AddLocalization.addEquivOfQuotient_addMonoidOf
 
 /- warning: localization.mul_equiv_of_quotient_symm_mk' -> Localization.mulEquivOfQuotient_symm_mk' is a dubious translation:
 lean 3 declaration is
@@ -2601,7 +2601,7 @@ theorem mulEquivOfQuotient_symm_mk' (x y) :
     (mulEquivOfQuotient f).symm (f.mk' x y) = (monoidOf S).mk' x y :=
   f.lift_mk' _ _ _
 #align localization.mul_equiv_of_quotient_symm_mk' Localization.mulEquivOfQuotient_symm_mk'
-#align add_localization.add_equiv_of_quotient_symm_mk' addLocalization.addEquivOfQuotient_symm_mk'
+#align add_localization.add_equiv_of_quotient_symm_mk' AddLocalization.addEquivOfQuotient_symm_mk'
 
 /- warning: localization.mul_equiv_of_quotient_symm_mk -> Localization.mulEquivOfQuotient_symm_mk is a dubious translation:
 lean 3 declaration is
@@ -2613,7 +2613,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mul_equiv
 theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x y) = mk x y := by
   rw [mk_eq_monoid_of_mk'_apply] <;> exact mul_equiv_of_quotient_symm_mk' _ _
 #align localization.mul_equiv_of_quotient_symm_mk Localization.mulEquivOfQuotient_symm_mk
-#align add_localization.add_equiv_of_quotient_symm_mk addLocalization.addEquivOfQuotient_symm_mk
+#align add_localization.add_equiv_of_quotient_symm_mk AddLocalization.addEquivOfQuotient_symm_mk
 
 /- warning: localization.mul_equiv_of_quotient_symm_monoid_of -> Localization.mulEquivOfQuotient_symm_monoidOf is a dubious translation:
 lean 3 declaration is
@@ -2626,7 +2626,7 @@ theorem mulEquivOfQuotient_symm_monoidOf (x) :
     (mulEquivOfQuotient f).symm (f.toMap x) = (monoidOf S).toMap x :=
   f.liftEq _ _
 #align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOf
-#align add_localization.add_equiv_of_quotient_symm_add_monoid_of addLocalization.addEquivOfQuotient_symm_addMonoidOf
+#align add_localization.add_equiv_of_quotient_symm_add_monoid_of AddLocalization.addEquivOfQuotient_symm_addMonoidOf
 
 section Away
 
@@ -2640,7 +2640,7 @@ variable (x : M)
 def Away :=
   Localization (Submonoid.powers x)
 #align localization.away Localization.Away
-#align add_localization.away addLocalization.Away
+#align add_localization.away AddLocalization.Away
 -/
 
 #print Localization.Away.invSelf /-
@@ -2651,7 +2651,7 @@ submonoid generated by `x`. -/
 def Away.invSelf : Away x :=
   mk 1 ⟨x, Submonoid.mem_powers _⟩
 #align localization.away.inv_self Localization.Away.invSelf
-#align add_localization.away.neg_self addLocalization.Away.negSelf
+#align add_localization.away.neg_self AddLocalization.Away.negSelf
 -/
 
 #print Localization.Away.monoidOf /-
@@ -2663,7 +2663,7 @@ of `(y, 1)` in the localization of `M` at the submonoid generated by `x`. -/
 def Away.monoidOf : Submonoid.LocalizationMap.AwayMap x (Away x) :=
   monoidOf (Submonoid.powers x)
 #align localization.away.monoid_of Localization.Away.monoidOf
-#align add_localization.away.add_monoid_of addLocalization.Away.addMonoidOf
+#align add_localization.away.add_monoid_of AddLocalization.Away.addMonoidOf
 -/
 
 /- warning: localization.away.mk_eq_monoid_of_mk' -> Localization.Away.mk_eq_monoidOf_mk' is a dubious translation:
@@ -2676,7 +2676,7 @@ Case conversion may be inaccurate. Consider using '#align localization.away.mk_e
 theorem Away.mk_eq_monoidOf_mk' : mk = (Away.monoidOf x).mk' :=
   mk_eq_monoidOf_mk'
 #align localization.away.mk_eq_monoid_of_mk' Localization.Away.mk_eq_monoidOf_mk'
-#align add_localization.away.mk_eq_add_monoid_of_mk' addLocalization.Away.mk_eq_addMonoidOf_mk'
+#align add_localization.away.mk_eq_add_monoid_of_mk' AddLocalization.Away.mk_eq_addMonoidOf_mk'
 
 /- warning: localization.away.mul_equiv_of_quotient -> Localization.Away.mulEquivOfQuotient is a dubious translation:
 lean 3 declaration is
@@ -2692,7 +2692,7 @@ noncomputable def Away.mulEquivOfQuotient (f : Submonoid.LocalizationMap.AwayMap
     Away x ≃* N :=
   mulEquivOfQuotient f
 #align localization.away.mul_equiv_of_quotient Localization.Away.mulEquivOfQuotient
-#align add_localization.away.add_equiv_of_quotient addLocalization.Away.addEquivOfQuotient
+#align add_localization.away.add_equiv_of_quotient AddLocalization.Away.addEquivOfQuotient
 
 end Away
 
@@ -2842,7 +2842,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_left_i
 theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
   simpa [-mk_eq_monoid_of_mk', mk_eq_mk_iff, r_iff_exists] using h
 #align localization.mk_left_injective Localization.mk_left_injective
-#align add_localization.mk_left_injective addLocalization.mk_left_injective
+#align add_localization.mk_left_injective AddLocalization.mk_left_injective
 
 /- warning: localization.mk_eq_mk_iff' -> Localization.mk_eq_mk_iff' is a dubious translation:
 lean 3 declaration is
@@ -2854,14 +2854,14 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_eq_mk_
 theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
   simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
 #align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'
-#align add_localization.mk_eq_mk_iff' addLocalization.mk_eq_mk_iff'
+#align add_localization.mk_eq_mk_iff' AddLocalization.mk_eq_mk_iff'
 
 #print Localization.decidableEq /-
 @[to_additive]
 instance decidableEq [DecidableEq α] : DecidableEq (Localization s) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_eq_mk_iff'
 #align localization.decidable_eq Localization.decidableEq
-#align add_localization.decidable_eq addLocalization.decidableEq
+#align add_localization.decidable_eq AddLocalization.decidableEq
 -/
 
 end Localization
@@ -2917,7 +2917,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_le_mk
 theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ :=
   Iff.rfl
 #align localization.mk_le_mk Localization.mk_le_mk
-#align add_localization.mk_le_mk addLocalization.mk_le_mk
+#align add_localization.mk_le_mk AddLocalization.mk_le_mk
 
 /- warning: localization.mk_lt_mk -> Localization.mk_lt_mk is a dubious translation:
 lean 3 declaration is
@@ -2929,7 +2929,7 @@ Case conversion may be inaccurate. Consider using '#align localization.mk_lt_mk
 theorem mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ :=
   Iff.rfl
 #align localization.mk_lt_mk Localization.mk_lt_mk
-#align add_localization.mk_lt_mk addLocalization.mk_lt_mk
+#align add_localization.mk_lt_mk AddLocalization.mk_lt_mk
 
 -- declaring this separately to the instance below makes things faster
 @[to_additive]
@@ -2982,7 +2982,7 @@ instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
     DecidableRel ((· ≤ ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_le_mk
 #align localization.decidable_le Localization.decidableLe
-#align add_localization.decidable_le addLocalization.decidableLe
+#align add_localization.decidable_le AddLocalization.decidableLe
 
 /- warning: localization.decidable_lt -> Localization.decidableLt is a dubious translation:
 lean 3 declaration is
@@ -2995,7 +2995,7 @@ instance decidableLt [DecidableRel ((· < ·) : α → α → Prop)] :
     DecidableRel ((· < ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_lt_mk
 #align localization.decidable_lt Localization.decidableLt
-#align add_localization.decidable_lt addLocalization.decidableLt
+#align add_localization.decidable_lt AddLocalization.decidableLt
 
 /- warning: localization.mk_order_embedding -> Localization.mkOrderEmbedding is a dubious translation:
 lean 3 declaration is
@@ -3013,7 +3013,7 @@ def mkOrderEmbedding (b : s) : α ↪o Localization s
   inj' := mk_left_injective _
   map_rel_iff' a b := by simp [-mk_eq_monoid_of_mk', mk_le_mk]
 #align localization.mk_order_embedding Localization.mkOrderEmbedding
-#align add_localization.mk_order_embedding addLocalization.mkOrderEmbedding
+#align add_localization.mk_order_embedding AddLocalization.mkOrderEmbedding
 
 end OrderedCancelCommMonoid
 
Diff
@@ -863,7 +863,7 @@ theorem sec_spec' {f : LocalizationMap S N} (z : N) :
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y)))) z) (Eq.{succ u2} N w (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y)))) z) (Eq.{succ u1} N w (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y)))) z) (Eq.{succ u1} N w (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_left Submonoid.LocalizationMap.mul_inv_leftₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `w * (f y)⁻¹ = z ↔ w = f y * z`. -/
@@ -880,7 +880,7 @@ theorem mul_inv_left {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N z (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))))) (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) w)
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N z (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))))) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) w)
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N z (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))))) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) w)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_right Submonoid.LocalizationMap.mul_inv_rightₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `z = w * (f y)⁻¹ ↔ z * f y = w`. -/
@@ -896,7 +896,7 @@ theorem mul_inv_right {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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₁ : M} {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} {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}, Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₁) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₂) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₂))))) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ ((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₂))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₂ ((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₁))))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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₁ : M} {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)} {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)}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₁) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₁) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₂) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₂) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₂))))) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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₁ : M} {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)} {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)}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₁) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₁) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₂) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₂) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₂))))) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv Submonoid.LocalizationMap.mul_invₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that
 `f(S) ⊆ Nˣ`, for all `x₁ x₂ : M` and `y₁, y₂ ∈ S`, we have
@@ -918,7 +918,7 @@ theorem mul_inv {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {x₁ x₂} {y₁ y
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (hf : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : 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 u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) y)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) z))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))))) z)))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (hf : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) y)) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) z) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) z))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z)))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (hf : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) y)) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) z) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) z))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_inj Submonoid.LocalizationMap.inv_injₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y, z ∈ S`, we have `(f y)⁻¹ = (f z)⁻¹ → f y = f z`. -/
@@ -936,7 +936,7 @@ theorem inv_inj {f : M →* N} (hf : ∀ y : S, IsUnit (f y)) {y z}
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : N}, (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z) (OfNat.ofNat.{u2} N 1 (OfNat.mk.{u2} N 1 (One.one.{u2} N (MulOneClass.toHasOne.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) -> (Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))) z)
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : N}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2))))) -> (Eq.{succ u1} N (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))) z)
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : N}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2))))) -> (Eq.{succ u1} N (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInv.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))) z)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_unique Submonoid.LocalizationMap.inv_uniqueₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y ∈ S`, `(f y)⁻¹` is unique. -/
@@ -1387,7 +1387,7 @@ variable {S g}
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : 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 u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g x) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (HasLiftT.mk.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (CoeTCₓ.coe.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (coeBase.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (Units.hasCoe.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Inv.inv.{u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Units.hasInv.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => (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) -> (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.hasCoeToFun.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (IsUnit.liftRight.{u1, u3} (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) P (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u3} P _inst_3) (MonoidHom.restrict.{u1, u3, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) P (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) g S) hg) y))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (Units.val.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3) (Inv.inv.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) y) (Units.instInvUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (fun (_x : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulOneClass.toMul.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S))) (MulOneClass.toMul.{u2} (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (IsUnit.liftRight.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) P (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S) (CommMonoid.toMonoid.{u2} P _inst_3) (MonoidHom.restrict.{u3, u2, u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) P (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) g S) hg) y))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (Units.val.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3) (Inv.inv.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) y) (Units.instInv.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (fun (_x : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulOneClass.toMul.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S))) (MulOneClass.toMul.{u2} (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (IsUnit.liftRight.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) P (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S) (CommMonoid.toMonoid.{u2} P _inst_3) (MonoidHom.restrict.{u3, u2, u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) P (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) g S) hg) y))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk' Submonoid.LocalizationMap.lift_mk'ₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
Diff
@@ -370,6 +370,12 @@ def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
 #align localization.rec Localization.rec
 #align add_localization.rec addLocalization.rec
 
+/- warning: localization.rec_on_subsingleton₂ -> Localization.recOnSubsingleton₂ is a dubious translation:
+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))} {r : (Localization.{u1} M _inst_1 S) -> (Localization.{u1} M _inst_1 S) -> Sort.{u2}} [h : forall (a : M) (c : M) (b : 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) (d : 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), Subsingleton.{u2} (r (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d))] (x : Localization.{u1} M _inst_1 S) (y : Localization.{u1} M _inst_1 S), (forall (a : M) (c : M) (b : 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) (d : 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), r (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d)) -> (r x 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))} {r : (Localization.{u2} M _inst_1 S) -> (Localization.{u2} M _inst_1 S) -> Sort.{u1}} [h : forall (a : M) (c : M) (b : 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)) (d : 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)), Subsingleton.{u1} (r (Localization.mk.{u2} M _inst_1 S a b) (Localization.mk.{u2} M _inst_1 S c d))] (x : Localization.{u2} M _inst_1 S) (y : Localization.{u2} M _inst_1 S), (forall (a : M) (c : M) (b : 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)) (d : 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)), r (Localization.mk.{u2} M _inst_1 S a b) (Localization.mk.{u2} M _inst_1 S c d)) -> (r x y)
+Case conversion may be inaccurate. Consider using '#align localization.rec_on_subsingleton₂ Localization.recOnSubsingleton₂ₓ'. -/
 /-- Copy of `quotient.rec_on_subsingleton₂` for `localization` -/
 @[elab_as_elim, to_additive "Copy of `quotient.rec_on_subsingleton₂` for `add_localization`"]
 def recOnSubsingleton₂ {r : Localization S → Localization S → Sort u}
@@ -408,7 +414,7 @@ theorem mk_one : mk 1 (1 : S) = 1 :=
 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 : Nat) (a : M) (b : 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 u1} (Localization.{u1} M _inst_1 S) (HPow.hPow.{u1, 0, u1} (Localization.{u1} M _inst_1 S) Nat (Localization.{u1} M _inst_1 S) (instHPow.{u1, 0} (Localization.{u1} M _inst_1 S) Nat (Monoid.Pow.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Localization.mk.{u1} M _inst_1 S a b) n) (Localization.mk.{u1} M _inst_1 S (HPow.hPow.{u1, 0, u1} M Nat M (instHPow.{u1, 0} M Nat (Monoid.Pow.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) a n) (HPow.hPow.{u1, 0, 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) Nat (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) (instHPow.{u1, 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) Nat (SubmonoidClass.nPow.{u1, u1} M (CommMonoid.toMonoid.{u1} M _inst_1) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) b n))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (n : Nat) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (HPow.hPow.{u1, 0, u1} (Localization.{u1} M _inst_1 S) Nat (Localization.{u1} M _inst_1 S) (instHPow.{u1, 0} (Localization.{u1} M _inst_1 S) Nat (Monoid.Pow.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (Localization.mk.{u1} M _inst_1 S a b) n) (Localization.mk.{u1} M _inst_1 S (HPow.hPow.{u1, 0, u1} M Nat M (instHPow.{u1, 0} M Nat (Monoid.Pow.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) a n) (HPow.hPow.{u1, 0, u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) Nat (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (instHPow.{u1, 0} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) Nat (SubmonoidClass.nPow.{u1, u1} M (CommMonoid.toMonoid.{u1} M _inst_1) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) b n))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (n : Nat) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (HPow.hPow.{u1, 0, u1} (Localization.{u1} M _inst_1 S) Nat (Localization.{u1} M _inst_1 S) (instHPow.{u1, 0} (Localization.{u1} M _inst_1 S) Nat (Monoid.Pow.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Localization.mk.{u1} M _inst_1 S a b) n) (Localization.mk.{u1} M _inst_1 S (HPow.hPow.{u1, 0, u1} M Nat M (instHPow.{u1, 0} M Nat (Monoid.Pow.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) a n) (HPow.hPow.{u1, 0, u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) Nat (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (instHPow.{u1, 0} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) Nat (SubmonoidClass.nPow.{u1, u1} M (CommMonoid.toMonoid.{u1} M _inst_1) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) b n))
 Case conversion may be inaccurate. Consider using '#align localization.mk_pow Localization.mk_powₓ'. -/
 @[to_additive]
 theorem mk_pow (n : ℕ) (a : M) (b : S) : mk a b ^ n = mk (a ^ n) (b ^ n) :=
@@ -640,7 +646,7 @@ instance [SMul R₁ M] [SMul R₂ M] [IsScalarTower R₁ M M] [IsScalarTower R
 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))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (Mul.toSMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) _inst_4], SMulCommClass.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.hasSmul.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (Mul.toSMul.{u1} (Localization.{u1} M _inst_1 S) (Localization.hasMul.{u1} M _inst_1 S))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4], SMulCommClass.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (MulAction.toSMul.{u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)) (Monoid.toMulAction.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4], SMulCommClass.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (MulAction.toSMul.{u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)) (Monoid.toMulAction.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))))
 Case conversion may be inaccurate. Consider using '#align localization.smul_comm_class_right Localization.smulCommClass_rightₓ'. -/
 instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
     SMulCommClass R (Localization S) (Localization S)
@@ -656,7 +662,7 @@ instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
 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))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (Mul.toSMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) _inst_4], IsScalarTower.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.hasSmul.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (Mul.toSMul.{u1} (Localization.{u1} M _inst_1 S) (Localization.hasMul.{u1} M _inst_1 S)) (Localization.hasSmul.{u1, u2} M _inst_1 S R _inst_4 _inst_5)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4], IsScalarTower.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (MulAction.toSMul.{u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)) (Monoid.toMulAction.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5)
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4], IsScalarTower.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (MulAction.toSMul.{u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)) (Monoid.toMulAction.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5)
 Case conversion may be inaccurate. Consider using '#align localization.is_scalar_tower_right Localization.isScalarTower_rightₓ'. -/
 instance isScalarTower_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
     IsScalarTower R (Localization S) (Localization S)
@@ -2300,7 +2306,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.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
+  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.15878.15886 : 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.15899 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15899 (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.15899) 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.15899) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15903 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15904 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15899) (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.15899) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15903) => 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.15903 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 +2340,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.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)
+  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.16088 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16089 : 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.16088) => 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.16088) (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 +2355,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.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)
+  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.16186 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16187 : 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.16186) => 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.16186) (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 +2383,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.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)))
+  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.16370 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16371 : 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.16370) => 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.16370) (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)
@@ -2422,12 +2428,7 @@ namespace Localization
 
 variable (S)
 
-/- warning: localization.monoid_of -> Localization.monoidOf is a dubious translation:
-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))), Submonoid.LocalizationMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))), Submonoid.LocalizationMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)
-Case conversion may be inaccurate. Consider using '#align localization.monoid_of Localization.monoidOfₓ'. -/
+#print Localization.monoidOf /-
 /-- Natural hom sending `x : M`, `M` a `comm_monoid`, to the equivalence class of
 `(x, 1)` in the localization of `M` at a submonoid. -/
 @[to_additive
@@ -2449,6 +2450,7 @@ def monoidOf : Submonoid.LocalizationMap S (Localization S) :=
           show (∃ c : S, ↑c * (1 * x) = c * (1 * y)) ↔ _ by rw [one_mul, one_mul] }
 #align localization.monoid_of Localization.monoidOf
 #align add_localization.add_monoid_of addLocalization.addMonoidOf
+-/
 
 variable {S}
 
@@ -2456,7 +2458,7 @@ variable {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))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mk_one_eq_monoid_of_mk Localization.mk_one_eq_monoidOf_mkₓ'. -/
 @[to_additive]
 theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x :=
@@ -2468,7 +2470,7 @@ theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x :=
 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))} (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 u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x y) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x y)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x y) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x y)
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x y) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x y)
 Case conversion may be inaccurate. Consider using '#align localization.mk_eq_monoid_of_mk'_apply Localization.mk_eq_monoidOf_mk'_applyₓ'. -/
 @[to_additive]
 theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
@@ -2486,7 +2488,7 @@ theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
 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))}, Eq.{succ u1} (M -> (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) -> (Localization.{u1} M _inst_1 S)) (Localization.mk.{u1} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))}, Eq.{succ u1} (M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> (Localization.{u1} M _inst_1 S)) (Localization.mk.{u1} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))}, Eq.{succ u1} (M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> (Localization.{u1} M _inst_1 S)) (Localization.mk.{u1} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S))
 Case conversion may be inaccurate. Consider using '#align localization.mk_eq_monoid_of_mk' Localization.mk_eq_monoidOf_mk'ₓ'. -/
 @[simp, to_additive]
 theorem mk_eq_monoidOf_mk' : mk = (monoidOf S).mk' :=
@@ -2500,7 +2502,7 @@ universe u
 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))} {p : Sort.{u2}} (f : M -> (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) -> p) (H : forall {a : M} {c : M} {b : 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} {d : 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}, (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) c d)) -> (Eq.{u2} p (f a b) (f c d))) (a : M) (b : 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.{u2} p (Localization.liftOn.{u1, u2} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) f H) (f a b)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : Sort.{u2}} (f : M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> p) (H : forall {a : M} {c : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)}, (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d)) -> (Eq.{u2} p (f a b) (f c d))) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{u2} p (Localization.liftOn.{u2, u1} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) f H) (f a b)
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : Sort.{u2}} (f : M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> p) (H : forall {a : M} {c : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)}, (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d)) -> (Eq.{u2} p (f a b) (f c d))) (a : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{u2} p (Localization.liftOn.{u2, u1} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) f H) (f a b)
 Case conversion may be inaccurate. Consider using '#align localization.lift_on_mk' Localization.liftOn_mk'ₓ'. -/
 @[simp, to_additive]
 theorem liftOn_mk' {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : S) :
@@ -2512,7 +2514,7 @@ theorem liftOn_mk' {p : Sort u} (f : ∀ (a : M) (b : S), p) (H) (a : M) (b : 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))} {p : Sort.{u2}} (f : M -> (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 -> (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) -> p) (H : forall {a : M} {a' : M} {b : 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} {b' : 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} {c : M} {c' : M} {d : 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} {d' : 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}, (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) a b) (Prod.mk.{u1, u1} M (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) a' b')) -> (coeFn.{succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (fun (_x : Con.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) => (Prod.{u1, u1} M (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)) -> (Prod.{u1, u1} M (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)) -> Prop) (Con.hasCoeToFun.{u1} (Prod.{u1, u1} M (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)) (Prod.hasMul.{u1, u1} M (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) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (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) c d) (Prod.mk.{u1, u1} M (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) c' d')) -> (Eq.{u2} p (f a b c d) (f a' b' c' d'))) (a : M) (c : M) (b : 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) (d : 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.{u2} p (Localization.liftOn₂.{u1, u2} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) c d) f H) (f a b c d)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : Sort.{u2}} (f : M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> p) (H : forall {a : M} {a' : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {b' : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {c : M} {c' : M} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d' : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)}, (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a' b')) -> (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c' d')) -> (Eq.{u2} p (f a b c d) (f a' b' c' d'))) (a : M) (c : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{u2} p (Localization.liftOn₂.{u2, u1} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) c d) f H) (f a b c d)
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {p : Sort.{u2}} (f : M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> M -> (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) -> p) (H : forall {a : M} {a' : M} {b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {b' : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {c : M} {c' : M} {d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)} {d' : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)}, (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a b) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) a' b')) -> (FunLike.coe.{succ u1, succ u1, succ u1} (Con.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (_x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (Prod.instMulProd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))) (Localization.r.{u1} M _inst_1 S) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c d) (Prod.mk.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) c' d')) -> (Eq.{u2} p (f a b c d) (f a' b' c' d'))) (a : M) (c : M) (b : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (d : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Eq.{u2} p (Localization.liftOn₂.{u2, u1} M _inst_1 S p (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) a b) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) c d) f H) (f a b c d)
 Case conversion may be inaccurate. Consider using '#align localization.lift_on₂_mk' Localization.liftOn₂_mk'ₓ'. -/
 @[simp, to_additive]
 theorem liftOn₂_mk' {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
@@ -2544,7 +2546,7 @@ variable {f}
 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} (x : Localization.{u1} M _inst_1 S), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (Localization.{u1} M _inst_1 S) -> N) (MonoidHom.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u1, u2} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u1} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : Localization.{u2} M _inst_1 S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Localization.{u2} M _inst_1 S) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u2, u2, u1} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u2} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : Localization.{u2} M _inst_1 S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Localization.{u2} M _inst_1 S) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u2, u2, u1} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u2} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_apply Localization.mulEquivOfQuotient_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lift f.map_units x :=
@@ -2556,7 +2558,7 @@ theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lif
 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} (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 u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (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 u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
+  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} (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 u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_mk' Localization.mulEquivOfQuotient_mk'ₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_mk' (x y) : mulEquivOfQuotient f ((monoidOf S).mk' x y) = f.mk' x y :=
@@ -2580,7 +2582,7 @@ theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y
 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} (x : M), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) (fun (_x : Localization.{u1} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) (fun (_x : Localization.{u1} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
@@ -2592,7 +2594,7 @@ theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toM
 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} (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 u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S) x 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (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 u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)
+  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} (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 u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S) x y)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_mk' Localization.mulEquivOfQuotient_symm_mk'ₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_mk' (x y) :
@@ -2617,7 +2619,7 @@ theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x
 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} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.commMonoid.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
@@ -2652,12 +2654,7 @@ def Away.invSelf : Away x :=
 #align add_localization.away.neg_self addLocalization.Away.negSelf
 -/
 
-/- warning: localization.away.monoid_of -> Localization.Away.monoidOf is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (x : M), Submonoid.LocalizationMap.AwayMap.{u1, u1} M _inst_1 x (Localization.Away.{u1} M _inst_1 x) (Localization.commMonoid.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))
-but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (x : M), Submonoid.LocalizationMap.AwayMap.{u1, u1} M _inst_1 x (Localization.Away.{u1} M _inst_1 x) (Localization.instCommMonoidLocalization.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))
-Case conversion may be inaccurate. Consider using '#align localization.away.monoid_of Localization.Away.monoidOfₓ'. -/
+#print Localization.Away.monoidOf /-
 /-- Given `x : M`, the natural hom sending `y : M`, `M` a `comm_monoid`, to the equivalence class
 of `(y, 1)` in the localization of `M` at the submonoid generated by `x`. -/
 @[reducible,
@@ -2667,12 +2664,13 @@ def Away.monoidOf : Submonoid.LocalizationMap.AwayMap x (Away x) :=
   monoidOf (Submonoid.powers x)
 #align localization.away.monoid_of Localization.Away.monoidOf
 #align add_localization.away.add_monoid_of addLocalization.Away.addMonoidOf
+-/
 
 /- warning: localization.away.mk_eq_monoid_of_mk' -> Localization.Away.mk_eq_monoidOf_mk' is a dubious translation:
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (x : M), Eq.{succ u1} (M -> (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)))) (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) -> (Localization.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))) (Localization.mk.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) (Localization.Away.{u1} M _inst_1 x) (Localization.commMonoid.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Localization.Away.monoidOf.{u1} M _inst_1 x))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (x : M), Eq.{succ u1} (M -> (Subtype.{succ u1} M (fun (x_1 : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))) -> (Localization.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))) (Localization.mk.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) (Localization.Away.{u1} M _inst_1 x) (Localization.instCommMonoidLocalization.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Localization.Away.monoidOf.{u1} M _inst_1 x))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] (x : M), Eq.{succ u1} (M -> (Subtype.{succ u1} M (fun (x_1 : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))) -> (Localization.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x))) (Localization.mk.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Submonoid.LocalizationMap.mk'.{u1, u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) (Localization.Away.{u1} M _inst_1 x) (Localization.commMonoid.{u1} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x)) (Localization.Away.monoidOf.{u1} M _inst_1 x))
 Case conversion may be inaccurate. Consider using '#align localization.away.mk_eq_monoid_of_mk' Localization.Away.mk_eq_monoidOf_mk'ₓ'. -/
 @[simp, to_additive]
 theorem Away.mk_eq_monoidOf_mk' : mk = (Away.monoidOf x).mk' :=
@@ -2834,23 +2832,37 @@ namespace Localization
 
 variable {α : Type _} [CancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
 
+/- warning: localization.mk_left_injective -> Localization.mk_left_injective is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))} (b : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s), Function.Injective.{succ u1, succ u1} α (Localization.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (a : α) => Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a b)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))} (b : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s)), Function.Injective.{succ u1, succ u1} α (Localization.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (a : α) => Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a b)
+Case conversion may be inaccurate. Consider using '#align localization.mk_left_injective Localization.mk_left_injectiveₓ'. -/
 @[to_additive]
 theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
   simpa [-mk_eq_monoid_of_mk', mk_eq_mk_iff, r_iff_exists] using h
 #align localization.mk_left_injective Localization.mk_left_injective
 #align add_localization.mk_left_injective addLocalization.mk_left_injective
 
+/- warning: localization.mk_eq_mk_iff' -> Localization.mk_eq_mk_iff' is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s}, Iff (Eq.{succ u1} (Localization.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s))))) a₂) b₁))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))} {a₁ : α} {b₁ : α} {a₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s)} {b₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) x s)}, Iff (Eq.{succ u1} (Localization.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (CancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (Eq.{succ u1} α (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) s)) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1)))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α _inst_1))))) s)) a₂) b₁))
+Case conversion may be inaccurate. Consider using '#align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'ₓ'. -/
 @[to_additive]
 theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
   simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
 #align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'
 #align add_localization.mk_eq_mk_iff' addLocalization.mk_eq_mk_iff'
 
+#print Localization.decidableEq /-
 @[to_additive]
 instance decidableEq [DecidableEq α] : DecidableEq (Localization s) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_eq_mk_iff'
 #align localization.decidable_eq Localization.decidableEq
 #align add_localization.decidable_eq addLocalization.decidableEq
+-/
 
 end Localization
 
@@ -2895,12 +2907,24 @@ instance : LT (Localization s) :=
             mul_lt_mul_iff_right, ← mul_lt_mul_iff_left, mul_left_comm, he, mul_left_comm,
             mul_left_comm ↑b₂, mul_lt_mul_iff_left])⟩
 
+/- warning: localization.mk_le_mk -> Localization.mk_le_mk is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s}, Iff (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) a₂) b₁))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)} {b₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)}, Iff (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) a₂) b₁))
+Case conversion may be inaccurate. Consider using '#align localization.mk_le_mk Localization.mk_le_mkₓ'. -/
 @[to_additive]
 theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ :=
   Iff.rfl
 #align localization.mk_le_mk Localization.mk_le_mk
 #align add_localization.mk_le_mk addLocalization.mk_le_mk
 
+/- warning: localization.mk_lt_mk -> Localization.mk_lt_mk is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s} {b₂ : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s}, Iff (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toHasMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) ((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} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) α (coeSubtype.{succ u1} α (fun (x : α) => Membership.Mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s))))) a₂) b₁))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} {a₁ : α} {b₁ : α} {a₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)} {b₂ : Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)}, Iff (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s a₁ a₂) (Localization.mk.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s b₁ b₂)) (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) b₂) a₁) (HMul.hMul.{u1, u1, u1} α α α (instHMul.{u1} α (MulOneClass.toMul.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) (Subtype.val.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) x (SetLike.coe.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) s)) a₂) b₁))
+Case conversion may be inaccurate. Consider using '#align localization.mk_lt_mk Localization.mk_lt_mkₓ'. -/
 @[to_additive]
 theorem mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ :=
   Iff.rfl
@@ -2947,6 +2971,12 @@ instance : OrderedCancelCommMonoid (Localization s) :=
         simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab⊢
         exact le_of_mul_le_mul_left' hab }
 
+/- warning: localization.decidable_le -> Localization.decidableLe is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLe.{u1} α _inst_1 s))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19618 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19620 : α) => LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19618 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19620)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19643 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19645 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LE.le.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.le.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19643 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19645)
+Case conversion may be inaccurate. Consider using '#align localization.decidable_le Localization.decidableLeₓ'. -/
 @[to_additive]
 instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
     DecidableRel ((· ≤ ·) : Localization s → Localization s → Prop) := fun a b =>
@@ -2954,6 +2984,12 @@ instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
 #align localization.decidable_le Localization.decidableLe
 #align add_localization.decidable_le addLocalization.decidableLe
 
+/- warning: localization.decidable_lt -> Localization.decidableLt is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))))], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.hasLt.{u1} α _inst_1 s))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))} [_inst_2 : DecidableRel.{succ u1} α (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19702 : α) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19704 : α) => LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19702 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19704)], DecidableRel.{succ u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19727 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19729 : Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) => LT.lt.{u1} (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Localization.lt.{u1} α _inst_1 s) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19727 x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.19729)
+Case conversion may be inaccurate. Consider using '#align localization.decidable_lt Localization.decidableLtₓ'. -/
 @[to_additive]
 instance decidableLt [DecidableRel ((· < ·) : α → α → Prop)] :
     DecidableRel ((· < ·) : Localization s → Localization s → Prop) := fun a b =>
@@ -2961,6 +2997,12 @@ instance decidableLt [DecidableRel ((· < ·) : α → α → Prop)] :
 #align localization.decidable_lt Localization.decidableLt
 #align add_localization.decidable_lt addLocalization.decidableLt
 
+/- warning: localization.mk_order_embedding -> Localization.mkOrderEmbedding is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))}, (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.setLike.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) s) -> (OrderEmbedding.{u1, u1} α (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (Localization.hasLe.{u1} α _inst_1 s))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : OrderedCancelCommMonoid.{u1} α] {s : Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))}, (Subtype.{succ u1} α (fun (x : α) => Membership.mem.{u1, u1} α (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1)))))) α (Submonoid.instSetLikeSubmonoid.{u1} α (Monoid.toMulOneClass.{u1} α (RightCancelMonoid.toMonoid.{u1} α (CancelMonoid.toRightCancelMonoid.{u1} α (CancelCommMonoid.toCancelMonoid.{u1} α (OrderedCancelCommMonoid.toCancelCommMonoid.{u1} α _inst_1))))))) x s)) -> (OrderEmbedding.{u1, u1} α (Localization.{u1} α (OrderedCancelCommMonoid.toCommMonoid.{u1} α _inst_1) s) (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OrderedCancelCommMonoid.toPartialOrder.{u1} α _inst_1))) (Localization.le.{u1} α _inst_1 s))
+Case conversion may be inaccurate. Consider using '#align localization.mk_order_embedding Localization.mkOrderEmbeddingₓ'. -/
 /-- An ordered cancellative monoid injects into its localization by sending `a` to `a / b`. -/
 @[to_additive
       "An ordered cancellative monoid injects into its localization by sending `a` to\n`a - b`.",
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Amelia Livingston
 
 ! This file was ported from Lean 3 source module group_theory.monoid_localization
-! leanprover-community/mathlib commit 13b8e258f14bffb5def542aa78b803b0b80541aa
+! leanprover-community/mathlib commit 10ee941346c27bdb5e87bb3535100c0b1f08ac41
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -2907,27 +2907,34 @@ theorem mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁
 #align localization.mk_lt_mk Localization.mk_lt_mk
 #align add_localization.mk_lt_mk addLocalization.mk_lt_mk
 
+-- declaring this separately to the instance below makes things faster
+@[to_additive]
+instance : PartialOrder (Localization s)
+    where
+  le := (· ≤ ·)
+  lt := (· < ·)
+  le_refl a := Localization.induction_on a fun a => le_rfl
+  le_trans a b c :=
+    Localization.induction_on₃ a b c fun a b c hab hbc =>
+      by
+      simp only [mk_le_mk] at hab hbc⊢
+      refine' le_of_mul_le_mul_left' _
+      · exact b.2
+      rw [mul_left_comm]
+      refine' (mul_le_mul_left' hab _).trans _
+      rwa [mul_left_comm, mul_left_comm ↑b.2, mul_le_mul_iff_left]
+  le_antisymm a b := by
+    induction' a with a₁ a₂
+    induction' b with b₁ b₂
+    simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists]
+    exact fun hab hba => ⟨1, by rw [hab.antisymm hba]⟩
+    all_goals intros ; rfl
+  lt_iff_le_not_le a b := Localization.induction_on₂ a b fun a b => lt_iff_le_not_le
+
 @[to_additive]
 instance : OrderedCancelCommMonoid (Localization s) :=
-  { Localization.commMonoid _, Localization.hasLe,
-    Localization.hasLt with
-    le_refl := fun a => Localization.induction_on a fun a => le_rfl
-    le_trans := fun a b c =>
-      Localization.induction_on₃ a b c fun a b c hab hbc =>
-        by
-        simp only [mk_le_mk] at hab hbc⊢
-        refine' le_of_mul_le_mul_left' _
-        · exact b.2
-        rw [mul_left_comm]
-        refine' (mul_le_mul_left' hab _).trans _
-        rwa [mul_left_comm, mul_left_comm ↑b.2, mul_le_mul_iff_left]
-    le_antisymm := fun a b => by
-      induction' a with a₁ a₂
-      induction' b with b₁ b₂
-      simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists]
-      exact fun hab hba => ⟨1, by rw [hab.antisymm hba]⟩
-      all_goals intros ; rfl
-    lt_iff_le_not_le := fun a b => Localization.induction_on₂ a b fun a b => lt_iff_le_not_le
+  { Localization.commMonoid s,
+    Localization.partialOrder with
     mul_le_mul_left := fun a b =>
       Localization.induction_on₂ a b fun a b hab c =>
         Localization.induction_on c fun c =>
Diff
@@ -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
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Amelia Livingston
 
 ! This file was ported from Lean 3 source module group_theory.monoid_localization
-! leanprover-community/mathlib commit 13a5329a8625701af92e9a96ffc90fa787fff24d
+! leanprover-community/mathlib commit 13b8e258f14bffb5def542aa78b803b0b80541aa
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -46,6 +46,9 @@ This defines the localization as a quotient type, `localization`, but the majori
 subsequent lemmas in the file are given in terms of localizations up to isomorphism, using maps
 which satisfy the characteristic predicate.
 
+The Grothendieck group construction corresponds to localizing at the top submonoid, namely making
+every element invertible.
+
 ## Implementation notes
 
 In maths it is natural to reason up to isomorphism, but in Lean we cannot naturally `rewrite` one
@@ -66,12 +69,21 @@ localization as a quotient type satisfies the characteristic predicate). The lem
 `mk_eq_monoid_of_mk'` hence gives you access to the results in the rest of the file, which are
 about the `localization_map.mk'` induced by any localization map.
 
+## TODO
+
+* Show that the localization at the top monoid is a group.
+* Generalise to (nonempty) subsemigroups.
+* If we acquire more bundlings, we can make `localization.mk_order_embedding` be an ordered monoid
+  embedding.
+
 ## Tags
 localization, monoid localization, quotient monoid, congruence relation, characteristic predicate,
-commutative monoid
+commutative monoid, grothendieck group
 -/
 
 
+open Function
+
 namespace AddSubmonoid
 
 variable {M : Type _} [AddCommMonoid M] (S : AddSubmonoid M) (N : Type _) [AddCommMonoid N]
@@ -339,11 +351,11 @@ 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))} {p : (Localization.{u2} M _inst_1 S) -> Sort.{u1}} (f : forall (a : M) (b : 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)), p (Localization.mk.{u2} M _inst_1 S a b)), (forall {a : M} {c : M} {b : 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)} {d : 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)} (h : FunLike.coe.{succ u2, succ u2, succ u2} (Con.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Prod.{u2, u2} M (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))) (fun (_x : Prod.{u2, u2} M (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))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u2, u2} M (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))) => (Prod.{u2, u2} M (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))) -> Prop) _x) (Con.instFunLikeConForAllProp.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Localization.r.{u2} M _inst_1 S) (Prod.mk.{u2, u2} M (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)) a b) (Prod.mk.{u2, u2} M (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)) c d)), Eq.{u1} (p (Localization.mk.{u2} M _inst_1 S c d)) (Eq.ndrec.{u1, succ u2} (Localization.{u2} M _inst_1 S) (Localization.mk.{u2} M _inst_1 S a b) p (f a b) (Localization.mk.{u2} M _inst_1 S c d) (Iff.mpr (Eq.{succ u2} (Localization.{u2} M _inst_1 S) (Localization.mk.{u2} M _inst_1 S a b) (Localization.mk.{u2} M _inst_1 S c d)) (FunLike.coe.{succ u2, succ u2, succ u2} (Con.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Prod.{u2, u2} M (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))) (fun (a : Prod.{u2, u2} M (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))) => (fun (x._@.Mathlib.GroupTheory.Congruence._hyg.479 : Prod.{u2, u2} M (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))) => (Prod.{u2, u2} M (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))) -> Prop) a) (Con.instFunLikeConForAllProp.{u2} (Prod.{u2, u2} M (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))) (Prod.instMulProd.{u2, u2} M (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)) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.mul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) S))) (Localization.r.{u2} M _inst_1 S) (Prod.mk.{u2, u2} M (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)) a b) (Prod.mk.{u2, u2} M (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)) c d)) (Localization.mk_eq_mk_iff.{u2} M _inst_1 S a c b d) h)) (f c d)) -> (forall (x : Localization.{u2} M _inst_1 S), p x)
 Case conversion may be inaccurate. Consider using '#align localization.rec Localization.recₓ'. -/
 /-- Dependent recursion principle for localizations: given elements `f a b : p (mk a b)`
-for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (wih the correct coercions),
+for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (with the correct coercions),
 then `f` is defined on the whole `localization S`. -/
 @[elab_as_elim,
   to_additive
-      "Dependent recursion principle for `add_localizations`: given elements `f a b : p (mk a b)`\nfor all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (wih the correct coercions),\nthen `f` is defined on the whole `add_localization S`."]
+      "Dependent recursion principle for `add_localization`s: given elements `f a b : p (mk a b)`\nfor all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (with the correct coercions),\nthen `f` is defined on the whole `add_localization S`."]
 def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
     (H :
       ∀ {a c : M} {b d : S} (h : r S (a, b) (c, d)),
@@ -358,6 +370,16 @@ def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
 #align localization.rec Localization.rec
 #align add_localization.rec addLocalization.rec
 
+/-- Copy of `quotient.rec_on_subsingleton₂` for `localization` -/
+@[elab_as_elim, to_additive "Copy of `quotient.rec_on_subsingleton₂` for `add_localization`"]
+def recOnSubsingleton₂ {r : Localization S → Localization S → Sort u}
+    [h : ∀ (a c : M) (b d : S), Subsingleton (r (mk a b) (mk c d))] (x y : Localization S)
+    (f : ∀ (a c : M) (b d : S), r (mk a b) (mk c d)) : r x y :=
+  @Quotient.recOnSubsingleton₂' _ _ _ _ r (Prod.rec fun _ _ => Prod.rec fun _ _ => h _ _ _ _) x y
+    (Prod.rec fun _ _ => Prod.rec fun _ _ => f _ _ _ _)
+#align localization.rec_on_subsingleton₂ Localization.recOnSubsingleton₂
+#align add_localization.rec_on_subsingleton₂ addLocalization.recOnSubsingleton₂
+
 /- warning: localization.mk_mul -> Localization.mk_mul is a dubious translation:
 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))} (a : M) (c : M) (b : 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) (d : 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 u1} (Localization.{u1} M _inst_1 S) (HMul.hMul.{u1, u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (instHMul.{u1} (Localization.{u1} M _inst_1 S) (Localization.hasMul.{u1} M _inst_1 S)) (Localization.mk.{u1} M _inst_1 S a b) (Localization.mk.{u1} M _inst_1 S c d)) (Localization.mk.{u1} M _inst_1 S (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) a c) (HMul.hMul.{u1, u1, 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) (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) (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) (instHMul.{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) (Submonoid.mul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)) b d))
@@ -2808,3 +2830,157 @@ end Submonoid
 
 end CommMonoidWithZero
 
+namespace Localization
+
+variable {α : Type _} [CancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
+
+@[to_additive]
+theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
+  simpa [-mk_eq_monoid_of_mk', mk_eq_mk_iff, r_iff_exists] using h
+#align localization.mk_left_injective Localization.mk_left_injective
+#align add_localization.mk_left_injective addLocalization.mk_left_injective
+
+@[to_additive]
+theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
+  simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
+#align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'
+#align add_localization.mk_eq_mk_iff' addLocalization.mk_eq_mk_iff'
+
+@[to_additive]
+instance decidableEq [DecidableEq α] : DecidableEq (Localization s) := fun a b =>
+  Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_eq_mk_iff'
+#align localization.decidable_eq Localization.decidableEq
+#align add_localization.decidable_eq addLocalization.decidableEq
+
+end Localization
+
+/-! ### Order -/
+
+
+namespace Localization
+
+variable {α : Type _}
+
+section OrderedCancelCommMonoid
+
+variable [OrderedCancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
+
+@[to_additive]
+instance : LE (Localization s) :=
+  ⟨fun a b =>
+    Localization.liftOn₂ a b (fun a₁ a₂ b₁ b₂ => ↑b₂ * a₁ ≤ a₂ * b₁)
+      fun a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd =>
+      propext
+        (by
+          obtain ⟨e, he⟩ := r_iff_exists.1 hab
+          obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
+          simp only [mul_right_inj] at he hf
+          dsimp
+          rw [← mul_le_mul_iff_right, mul_right_comm, ← hf, mul_right_comm, mul_right_comm ↑a₂,
+            mul_le_mul_iff_right, ← mul_le_mul_iff_left, mul_left_comm, he, mul_left_comm,
+            mul_left_comm ↑b₂, mul_le_mul_iff_left])⟩
+
+@[to_additive]
+instance : LT (Localization s) :=
+  ⟨fun a b =>
+    Localization.liftOn₂ a b (fun a₁ a₂ b₁ b₂ => ↑b₂ * a₁ < a₂ * b₁)
+      fun a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd =>
+      propext
+        (by
+          obtain ⟨e, he⟩ := r_iff_exists.1 hab
+          obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
+          simp only [mul_right_inj] at he hf
+          dsimp
+          rw [← mul_lt_mul_iff_right, mul_right_comm, ← hf, mul_right_comm, mul_right_comm ↑a₂,
+            mul_lt_mul_iff_right, ← mul_lt_mul_iff_left, mul_left_comm, he, mul_left_comm,
+            mul_left_comm ↑b₂, mul_lt_mul_iff_left])⟩
+
+@[to_additive]
+theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ :=
+  Iff.rfl
+#align localization.mk_le_mk Localization.mk_le_mk
+#align add_localization.mk_le_mk addLocalization.mk_le_mk
+
+@[to_additive]
+theorem mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ :=
+  Iff.rfl
+#align localization.mk_lt_mk Localization.mk_lt_mk
+#align add_localization.mk_lt_mk addLocalization.mk_lt_mk
+
+@[to_additive]
+instance : OrderedCancelCommMonoid (Localization s) :=
+  { Localization.commMonoid _, Localization.hasLe,
+    Localization.hasLt with
+    le_refl := fun a => Localization.induction_on a fun a => le_rfl
+    le_trans := fun a b c =>
+      Localization.induction_on₃ a b c fun a b c hab hbc =>
+        by
+        simp only [mk_le_mk] at hab hbc⊢
+        refine' le_of_mul_le_mul_left' _
+        · exact b.2
+        rw [mul_left_comm]
+        refine' (mul_le_mul_left' hab _).trans _
+        rwa [mul_left_comm, mul_left_comm ↑b.2, mul_le_mul_iff_left]
+    le_antisymm := fun a b => by
+      induction' a with a₁ a₂
+      induction' b with b₁ b₂
+      simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists]
+      exact fun hab hba => ⟨1, by rw [hab.antisymm hba]⟩
+      all_goals intros ; rfl
+    lt_iff_le_not_le := fun a b => Localization.induction_on₂ a b fun a b => lt_iff_le_not_le
+    mul_le_mul_left := fun a b =>
+      Localization.induction_on₂ a b fun a b hab c =>
+        Localization.induction_on c fun c =>
+          by
+          simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ c.1] at hab⊢
+          exact mul_le_mul_left' hab _
+    le_of_mul_le_mul_left := fun a b c =>
+      Localization.induction_on₃ a b c fun a b c hab =>
+        by
+        simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab⊢
+        exact le_of_mul_le_mul_left' hab }
+
+@[to_additive]
+instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
+    DecidableRel ((· ≤ ·) : Localization s → Localization s → Prop) := fun a b =>
+  Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_le_mk
+#align localization.decidable_le Localization.decidableLe
+#align add_localization.decidable_le addLocalization.decidableLe
+
+@[to_additive]
+instance decidableLt [DecidableRel ((· < ·) : α → α → Prop)] :
+    DecidableRel ((· < ·) : Localization s → Localization s → Prop) := fun a b =>
+  Localization.recOnSubsingleton₂ a b fun a₁ a₂ b₁ b₂ => decidable_of_iff' _ mk_lt_mk
+#align localization.decidable_lt Localization.decidableLt
+#align add_localization.decidable_lt addLocalization.decidableLt
+
+/-- An ordered cancellative monoid injects into its localization by sending `a` to `a / b`. -/
+@[to_additive
+      "An ordered cancellative monoid injects into its localization by sending `a` to\n`a - b`.",
+  simps]
+def mkOrderEmbedding (b : s) : α ↪o Localization s
+    where
+  toFun a := mk a b
+  inj' := mk_left_injective _
+  map_rel_iff' a b := by simp [-mk_eq_monoid_of_mk', mk_le_mk]
+#align localization.mk_order_embedding Localization.mkOrderEmbedding
+#align add_localization.mk_order_embedding addLocalization.mkOrderEmbedding
+
+end OrderedCancelCommMonoid
+
+@[to_additive]
+instance [LinearOrderedCancelCommMonoid α] {s : Submonoid α} :
+    LinearOrderedCancelCommMonoid (Localization s) :=
+  {
+    Localization.orderedCancelCommMonoid with
+    le_total := fun a b =>
+      Localization.induction_on₂ a b fun _ _ =>
+        by
+        simp_rw [mk_le_mk]
+        exact le_total _ _
+    decidableLe := @Localization.decidableLe α _ _ LE.le.decidable
+    decidableLt := @Localization.decidableLt α _ _ LT.lt.decidable
+    decidableLt := Localization.decidableEq }
+
+end Localization
+
Diff
@@ -2278,7 +2278,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.15173.15181 : 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.15194 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15194 (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.15194) 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.15194) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15198 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15199 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15194) (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.15194) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15198) => 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.15198 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.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
 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."]
@@ -2312,7 +2312,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.15383 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15384 : 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.15383) => 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.15383) (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.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)
 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}
@@ -2327,7 +2327,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.15481 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15482 : 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.15481) => 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.15481) (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.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)
 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}
@@ -2355,7 +2355,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.15665 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15666 : 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.15665) => 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.15665) (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.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)))
 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
@@ -2278,7 +2278,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.14801.14809 : 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.14822 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14822 (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.14822) 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.14822) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14826 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14827 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14822) (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.14822) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14826) => 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.14826 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.15173.15181 : 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.15194 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15194 (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.15194) 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.15194) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15198 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15199 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15194) (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.15194) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15198) => 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.15198 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."]
@@ -2312,7 +2312,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.15011 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15012 : 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.15011) => 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.15011) (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.15383 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15384 : 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.15383) => 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.15383) (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}
@@ -2327,7 +2327,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.15109 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15110 : 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.15109) => 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.15109) (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.15481 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15482 : 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.15481) => 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.15481) (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}
@@ -2355,7 +2355,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.15293 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15294 : 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.15293) => 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.15293) (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.15665 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15666 : 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.15665) => 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.15665) (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
@@ -2278,7 +2278,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.14745.14753 : 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.14766 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14766 (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.14766) 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.14766) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14770 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14771 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14766) (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.14766) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14770) => 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.14770 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.14801.14809 : 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.14822 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14822 (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.14822) 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.14822) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14826 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14827 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14822) (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.14822) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14826) => 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.14826 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."]
@@ -2312,7 +2312,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.14955 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14956 : 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.14955) => 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.14955) (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.15011 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15012 : 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.15011) => 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.15011) (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}
@@ -2327,7 +2327,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.15053 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15054 : 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.15053) => 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.15053) (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.15109 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15110 : 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.15109) => 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.15109) (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}
@@ -2355,7 +2355,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.15237 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15238 : 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.15237) => 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.15237) (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.15293 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15294 : 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.15293) => 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.15293) (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
@@ -684,7 +684,7 @@ namespace MonoidHom
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (Prod.fst.{u1, u1} M (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) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f y)) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
 but is expected to have type
-  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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f y)) (Exists.{succ u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (fun (c : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
+  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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f y)) (Exists.{succ u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (fun (c : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.to_localization_map MonoidHom.toLocalizationMapₓ'. -/
 /-- Makes a localization map from a `comm_monoid` hom satisfying the characteristic predicate. -/
 @[to_additive
@@ -718,7 +718,7 @@ abbrev toMap (f : LocalizationMap S N) :=
 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} {g : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u1) (succ u2)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) f g)
 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} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g)
+  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} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.ext Submonoid.LocalizationMap.extₓ'. -/
 @[ext, to_additive]
 theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f = g :=
@@ -734,7 +734,7 @@ theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f =
 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} {g : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u1) (succ u2)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 g) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.ext_iff Submonoid.LocalizationMap.ext_iffₓ'. -/
 @[to_additive]
 theorem ext_iff {f g : LocalizationMap S N} : f = g ↔ ∀ x, f.toMap x = g.toMap x :=
@@ -758,7 +758,7 @@ theorem toMap_injective : Function.Injective (@LocalizationMap.toMap _ _ S N _)
 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) (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))
 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) (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))
+  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) (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_units Submonoid.LocalizationMap.map_unitsₓ'. -/
 @[to_additive]
 theorem map_units (f : LocalizationMap S N) (y : S) : IsUnit (f.toMap y) :=
@@ -770,7 +770,7 @@ theorem map_units (f : LocalizationMap S N) (y : S) : IsUnit (f.toMap y) :=
 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) (z : N), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (z : N), Exists.{succ u2} (Prod.{u2, u2} M (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))) (fun (x : Prod.{u2, u2} M (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) x))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) x)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (z : N), Exists.{succ u2} (Prod.{u2, u2} M (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))) (fun (x : Prod.{u2, u2} M (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) x))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) x)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) x)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.surj Submonoid.LocalizationMap.surjₓ'. -/
 @[to_additive]
 theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2 = f.toMap x.1 :=
@@ -782,7 +782,7 @@ theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2
 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) {x : M} {y : M}, Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) (Exists.{succ u2} (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)) (fun (c : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y)))
+  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) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) (Exists.{succ u2} (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)) (fun (c : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_iff_exists Submonoid.LocalizationMap.eq_iff_existsₓ'. -/
 @[to_additive]
 theorem eq_iff_exists (f : LocalizationMap S N) {x y} :
@@ -810,7 +810,7 @@ noncomputable def sec (f : LocalizationMap S N) (z : N) : M × 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} (z : N), Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
 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} (z : N), Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+  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} (z : N), Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_spec Submonoid.LocalizationMap.sec_specₓ'. -/
 @[to_additive]
 theorem sec_spec {f : LocalizationMap S N} (z : N) :
@@ -823,7 +823,7 @@ theorem sec_spec {f : LocalizationMap S N} (z : N) :
 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} (z : N), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) z)
 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} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) z)
+  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} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) z)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_spec' Submonoid.LocalizationMap.sec_spec'ₓ'. -/
 @[to_additive]
 theorem sec_spec' {f : LocalizationMap S N} (z : N) :
@@ -835,7 +835,7 @@ theorem sec_spec' {f : LocalizationMap S N} (z : N) :
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y)))) z) (Eq.{succ u2} N w (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y)))) z) (Eq.{succ u1} N w (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y)))) z) (Eq.{succ u1} N w (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_left Submonoid.LocalizationMap.mul_inv_leftₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `w * (f y)⁻¹ = z ↔ w = f y * z`. -/
@@ -852,7 +852,7 @@ theorem mul_inv_left {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N z (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))))) (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) w)
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N z (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))))) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) w)
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N z (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))))) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) w)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_right Submonoid.LocalizationMap.mul_inv_rightₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `z = w * (f y)⁻¹ ↔ z * f y = w`. -/
@@ -868,7 +868,7 @@ theorem mul_inv_right {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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₁ : M} {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} {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}, Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₁) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₂) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₂))))) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ ((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₂))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₂ ((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₁))))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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₁ : M} {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)} {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)}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₁) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₁) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₂) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₂) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₂))))) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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₁ : M} {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)} {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)}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₁) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₁) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₂) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₂) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₂) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₂))))) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv Submonoid.LocalizationMap.mul_invₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that
 `f(S) ⊆ Nˣ`, for all `x₁ x₂ : M` and `y₁, y₂ ∈ S`, we have
@@ -890,7 +890,7 @@ theorem mul_inv {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {x₁ x₂} {y₁ y
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (hf : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : 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 u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) y)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) z))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))))) z)))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (hf : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) y)) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) z) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) z))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z)))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (hf : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) y)) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) z) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) z))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_inj Submonoid.LocalizationMap.inv_injₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y, z ∈ S`, we have `(f y)⁻¹ = (f z)⁻¹ → f y = f z`. -/
@@ -908,7 +908,7 @@ theorem inv_inj {f : M →* N} (hf : ∀ y : S, IsUnit (f y)) {y z}
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : N}, (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z) (OfNat.ofNat.{u2} N 1 (OfNat.mk.{u2} N 1 (One.one.{u2} N (MulOneClass.toHasOne.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) -> (Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))) z)
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : N}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Monoid.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2))))) -> (Eq.{succ u1} N (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))) z)
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : N}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2))))) -> (Eq.{succ u1} N (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))) z)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_unique Submonoid.LocalizationMap.inv_uniqueₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y ∈ S`, `(f y)⁻¹` is unique. -/
@@ -925,7 +925,7 @@ variable (f : LocalizationMap S N)
 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) {x : M} {y : M} {c : 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 u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) y))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
+  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) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancelₓ'. -/
 @[to_additive]
 theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
@@ -942,7 +942,7 @@ theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
 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) {x : M} {y : M} {c : 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 u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x ((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))))) c))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) y ((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))))) c)))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y (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)) c)))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
+  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) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y (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)) c)))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_left_cancel Submonoid.LocalizationMap.map_left_cancelₓ'. -/
 @[to_additive]
 theorem map_left_cancel {x y} {c : S} (h : f.toMap (x * c) = f.toMap (y * c)) :
@@ -987,7 +987,7 @@ theorem mk'_mul (x₁ x₂ : M) (y₁ y₂ : S) : f.mk' (x₁ * x₂) (y₁ * y
 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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_one Submonoid.LocalizationMap.mk'_oneₓ'. -/
 @[to_additive]
 theorem mk'_one (x) : f.mk' x (1 : S) = f.toMap x := by
@@ -1023,7 +1023,7 @@ theorem mk'_surjective (z : N) : ∃ (x : _)(y : S), f.mk' x y = z :=
 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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_spec Submonoid.LocalizationMap.mk'_specₓ'. -/
 @[to_additive]
 theorem mk'_spec (x) (y : S) : f.mk' x y * f.toMap y = f.toMap x :=
@@ -1035,7 +1035,7 @@ theorem mk'_spec (x) (y : S) : f.mk' x y * f.toMap y = f.toMap x :=
 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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_spec' Submonoid.LocalizationMap.mk'_spec'ₓ'. -/
 @[to_additive]
 theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_comm, mk'_spec]
@@ -1046,7 +1046,7 @@ theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_
 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) {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} {z : N}, Iff (Eq.{succ u2} N z (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {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)} {z : N}, Iff (Eq.{succ u1} N z (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {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)} {z : N}, Iff (Eq.{succ u1} N z (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_mk'_iff_mul_eq Submonoid.LocalizationMap.eq_mk'_iff_mul_eqₓ'. -/
 @[to_additive]
 theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.toMap x :=
@@ -1058,7 +1058,7 @@ theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.
 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) {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} {z : N}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))
 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) {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)} {z : N}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))))
+  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) {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)} {z : N}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq_mul Submonoid.LocalizationMap.mk'_eq_iff_eq_mulₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.toMap y := by
@@ -1070,7 +1070,7 @@ theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.
 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) {x₁ : M} {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} {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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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₁)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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₂)))
 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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₂)))
+  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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₂)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq Submonoid.LocalizationMap.mk'_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
@@ -1089,7 +1089,7 @@ theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : 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) {x₁ : M} {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} {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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ ((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₂))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₂ ((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₁))))
 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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
+  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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq' Submonoid.LocalizationMap.mk'_eq_iff_eq'ₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq' {x₁ x₂} {y₁ y₂ : S} :
@@ -1128,7 +1128,7 @@ protected theorem eq' {a₁ b₁} {a₂ b₂ : 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] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 g) x) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 g) y))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) y))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_iff_eq Submonoid.LocalizationMap.eq_iff_eqₓ'. -/
 @[to_additive]
 theorem eq_iff_eq (g : LocalizationMap S P) {x y} : f.toMap x = f.toMap y ↔ g.toMap x = g.toMap y :=
@@ -1219,7 +1219,7 @@ theorem mk'_self (x) (H : x ∈ S) : f.mk' x ⟨x, H⟩ = 1 := by convert mk'_se
 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) (x₁ : M) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ x₂) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (x₁ : M) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
+  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) (x₁ : M) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_mk'_eq_mk'_of_mul Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mulₓ'. -/
 @[to_additive]
 theorem mul_mk'_eq_mk'_of_mul (x₁ x₂) (y : S) : f.toMap x₁ * f.mk' x₂ y = f.mk' (x₁ * x₂) y := by
@@ -1231,7 +1231,7 @@ theorem mul_mk'_eq_mk'_of_mul (x₁ x₂) (y : S) : f.toMap x₁ * f.mk' x₂ y
 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) (x₁ : M) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ x₂) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (x₁ : M) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
+  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) (x₁ : M) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x₁) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_eq_mk'_of_mul Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mulₓ'. -/
 @[to_additive]
 theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁ = f.mk' (x₁ * x₂) y := by
@@ -1243,7 +1243,7 @@ theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁
 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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u1} M 1 (OfNat.mk.{u1} M 1 (One.one.{u1} M (MulOneClass.toHasOne.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M (Monoid.toOne.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
+  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) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M (Monoid.toOne.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_mk'_one_eq_mk' Submonoid.LocalizationMap.mul_mk'_one_eq_mk'ₓ'. -/
 @[to_additive]
 theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
@@ -1255,7 +1255,7 @@ theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
 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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x ((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)) y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_cancel_right Submonoid.LocalizationMap.mk'_mul_cancel_rightₓ'. -/
 @[simp, to_additive]
 theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
@@ -1267,7 +1267,7 @@ theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
 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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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) y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_cancel_left Submonoid.LocalizationMap.mk'_mul_cancel_leftₓ'. -/
 @[to_additive]
 theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := by
@@ -1279,7 +1279,7 @@ theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := b
 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) (j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (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), IsUnit.{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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) ((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))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) (j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) (j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.is_unit_comp Submonoid.LocalizationMap.isUnit_compₓ'. -/
 @[to_additive]
 theorem isUnit_comp (j : N →* P) (y : S) : IsUnit (j.comp f.toMap y) :=
@@ -1294,7 +1294,7 @@ variable {g : 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) {g : 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))}, (forall (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), IsUnit.{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))) g ((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))) -> (forall {x : M} {y : M}, (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} P (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))) g x) (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))) g y)))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) -> (forall {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) -> (forall {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_of_eq Submonoid.LocalizationMap.eq_of_eqₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g(S) ⊆ units P`, `f x = f y → g x = g y` for all `x y : M`. -/
@@ -1313,7 +1313,7 @@ theorem eq_of_eq (hg : ∀ y : S, IsUnit (g y)) {x y} (h : f.toMap x = f.toMap y
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (forall (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), 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))) g ((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) -> (forall (k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g 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) {g : 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))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q], (forall (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)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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.2372 : 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))))) g (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) -> (forall (k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (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.2372 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2372 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2372 : 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))))) g y))))
+  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) {g : 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))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q], (forall (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)), 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))))) g (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) -> (forall (k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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))))) g y))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.comp_eq_of_eq Submonoid.LocalizationMap.comp_eq_of_eqₓ'. -/
 /-- Given `comm_monoid`s `M, P`, localization maps `f : M →* N, k : P →* Q` for submonoids
 `S, T` respectively, and `g : M →* P` such that `g(S) ⊆ T`, `f x = f y` implies
@@ -1332,7 +1332,7 @@ variable (hg : ∀ y : S, IsUnit (g y))
 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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (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), IsUnit.{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))) g ((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))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
 but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
+  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift Submonoid.LocalizationMap.liftₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
@@ -1359,7 +1359,7 @@ variable {S g}
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : 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 u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g x) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (HasLiftT.mk.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (CoeTCₓ.coe.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (coeBase.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (Units.hasCoe.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Inv.inv.{u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Units.hasInv.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => (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) -> (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.hasCoeToFun.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (IsUnit.liftRight.{u1, u3} (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) P (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u3} P _inst_3) (MonoidHom.restrict.{u1, u3, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) P (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) g S) hg) y))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (Units.val.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3) (Inv.inv.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) y) (Units.instInvUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (fun (_x : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulOneClass.toMul.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S))) (MulOneClass.toMul.{u2} (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (IsUnit.liftRight.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) P (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S) (CommMonoid.toMonoid.{u2} P _inst_3) (MonoidHom.restrict.{u3, u2, u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) P (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) g S) hg) y))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (Units.val.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3) (Inv.inv.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) y) (Units.instInvUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (fun (_x : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulOneClass.toMul.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S))) (MulOneClass.toMul.{u2} (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (IsUnit.liftRight.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) P (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S) (CommMonoid.toMonoid.{u2} P _inst_3) (MonoidHom.restrict.{u3, u2, u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) P (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) g S) hg) y))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk' Submonoid.LocalizationMap.lift_mk'ₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
@@ -1377,7 +1377,7 @@ theorem lift_mk' (x y) : f.lift hg (f.mk' x y) = g x * ↑(IsUnit.liftRight (g.r
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N) (v : P), Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} P (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 but is expected to have type
-  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
+  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec Submonoid.LocalizationMap.lift_specₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v : P`, we have
@@ -1393,7 +1393,7 @@ theorem lift_spec (z v) : f.lift hg z = v ↔ g (f.sec z).1 = g (f.sec z).2 * v
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N) (w : P) (v : P), Iff (Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 but is expected to have type
-  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (w : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
+  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (w : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec_mul Submonoid.LocalizationMap.lift_spec_mulₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v w : P`, we have
@@ -1413,7 +1413,7 @@ theorem lift_spec_mul (z w v) : f.lift hg z * w = v ↔ g (f.sec z).1 * w = g (f
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : M) (v : P) (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), Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u3} P (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))) g x) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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)) v))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (v : P) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) v))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (v : P) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) v))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk'_spec Submonoid.LocalizationMap.lift_mk'_specₓ'. -/
 @[to_additive]
 theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y * v := by
@@ -1425,7 +1425,7 @@ theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y *
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N), Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+  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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((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)) (CommMonoid.toMonoid.{u3} ((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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_right Submonoid.LocalizationMap.lift_mul_rightₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
@@ -1441,7 +1441,7 @@ theorem lift_mul_right (z) : f.lift hg z * g (f.sec z).2 = g (f.sec z).1 :=
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N), Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+  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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((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)) (CommMonoid.toMonoid.{u3} ((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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u3, u3, u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) z) ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_left Submonoid.LocalizationMap.lift_mul_leftₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
@@ -1457,7 +1457,7 @@ theorem lift_mul_left (z) : g (f.sec z).2 * f.lift hg z = g (f.sec z).1 := by
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (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))) g 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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 : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((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)) (CommMonoid.toMonoid.{u3} ((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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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 : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq Submonoid.LocalizationMap.lift_eqₓ'. -/
 @[simp, to_additive]
 theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
@@ -1469,7 +1469,7 @@ theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : Prod.{u1, u1} M (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)} {y : Prod.{u1, u1} M (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)}, Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (Prod.fst.{u1, u1} M (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) x) (Prod.snd.{u1, u1} M (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) x))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (Prod.fst.{u1, u1} M (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) y) (Prod.snd.{u1, u1} M (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) y)))) (Eq.{succ u3} P (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))) g (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Prod.fst.{u1, u1} M (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) x) ((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))))) (Prod.snd.{u1, u1} M (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) y)))) (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))) g (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Prod.fst.{u1, u1} M (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) y) ((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))))) (Prod.snd.{u1, u1} M (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) x)))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) {x : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))} {y : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x)))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) {x : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))} {y : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x)))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq_iff Submonoid.LocalizationMap.lift_eq_iffₓ'. -/
 @[to_additive]
 theorem lift_eq_iff {x y : M × S} :
@@ -1482,7 +1482,7 @@ theorem lift_eq_iff {x y : M × 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] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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.{max (succ u3) (succ u1)} (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.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) g
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHom.comp.{u3, u1, u2} M N P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f)) g
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHom.comp.{u3, u1, u2} M N P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f)) g
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_comp Submonoid.LocalizationMap.lift_compₓ'. -/
 @[simp, to_additive]
 theorem lift_comp : (f.lift hg).comp f.toMap = g := by ext <;> exact f.lift_eq hg _
@@ -1509,7 +1509,7 @@ theorem lift_of_comp (j : N →* P) : f.lift (f.isUnit_comp j) = j :=
 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) {j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (a : M), Eq.{succ u3} P (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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) a) (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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) j k)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (a : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) j k)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (a : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) j k)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.epic_of_localization_map Submonoid.LocalizationMap.epic_of_localizationMapₓ'. -/
 @[to_additive]
 theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a = k.comp f.toMap a) :
@@ -1523,7 +1523,7 @@ theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a =
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) {j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (x : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) j (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (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))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) j (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) j (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_unique Submonoid.LocalizationMap.lift_uniqueₓ'. -/
 @[to_additive]
 theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg = j :=
@@ -1539,7 +1539,7 @@ theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg
 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) (x : N), Eq.{succ u2} N (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => N -> N) (MonoidHom.hasCoeToFun.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x) x
 but is expected to have type
-  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) (x : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => N) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u2, u1} M _inst_1 S N _inst_2 f)) x) x
+  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) (x : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => N) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u2, u1} M _inst_1 S N _inst_2 f)) x) x
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_id Submonoid.LocalizationMap.lift_idₓ'. -/
 @[simp, to_additive]
 theorem lift_id (x) : f.lift f.map_units x = x :=
@@ -1551,7 +1551,7 @@ theorem lift_id (x) : f.lift f.map_units x = x :=
 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} (z : N), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S P _inst_3 k)) z)) z
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) z
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) z
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_left_inverse Submonoid.LocalizationMap.lift_left_inverseₓ'. -/
 /-- Given two localization maps `f : M →* N, k : M →* P` for a submonoid `S ⊆ M`,
 the hom from `P` to `N` induced by `f` is left inverse to the hom from `N` to `P`
@@ -1583,7 +1583,7 @@ theorem lift_left_inverse {k : LocalizationMap S P} (z : N) :
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))), Iff (Function.Surjective.{succ u2, succ u3} N P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) v (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (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))) g (Prod.fst.{u1, u1} M (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) x))))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Surjective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} P (HMul.hMul.{u2, u2, u2} P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) P (instHMul.{u2} P (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) v (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Surjective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} P (HMul.hMul.{u2, u2, u2} P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) P (instHMul.{u2} P (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) v (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_surjective_iff Submonoid.LocalizationMap.lift_surjective_iffₓ'. -/
 @[to_additive]
 theorem lift_surjective_iff :
@@ -1607,7 +1607,7 @@ theorem lift_surjective_iff :
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))), Iff (Function.Injective.{succ u2, succ u3} N P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u3} P (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))) g x) (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))) g y)))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Injective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Injective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_injective_iff Submonoid.LocalizationMap.lift_injective_iffₓ'. -/
 @[to_additive]
 theorem lift_injective_iff :
@@ -1635,7 +1635,7 @@ variable {T : Submonoid P} (hy : ∀ y : S, g y ∈ T) {Q : Type _} [CommMonoid
 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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (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), 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))) g ((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) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
 but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
+  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map Submonoid.LocalizationMap.mapₓ'. -/
 /-- Given a `comm_monoid` homomorphism `g : M →* P` where for submonoids `S ⊆ M, T ⊆ P` we have
 `g(S) ⊆ T`, the induced monoid homomorphism from the localization of `M` at `S` to the
@@ -1655,7 +1655,7 @@ variable {k}
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} Q (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 g T hy Q _inst_4 k) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g x))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u4), 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))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, 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))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, 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))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{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.{u3, u2, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u4), 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))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, 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))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, 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))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{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.{u3, u2, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_eq Submonoid.LocalizationMap.map_eqₓ'. -/
 @[to_additive]
 theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
@@ -1667,7 +1667,7 @@ theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u1)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.comp.{u1, u2, u4} M N Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (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 g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u1, u3, u4} M P Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) g)
 but is expected to have type
-  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u3)} (MonoidHom.{u4, u3} M Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHom.comp.{u4, u2, u3} M N Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u4, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u4, u1, u3} M P Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u1, u3} P _inst_3 T Q _inst_4 k) g)
+  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u3)} (MonoidHom.{u4, u3} M Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHom.comp.{u4, u2, u3} M N Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u4, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u4, u1, u3} M P Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u1, u3} P _inst_3 T Q _inst_4 k) g)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp Submonoid.LocalizationMap.map_compₓ'. -/
 @[simp, to_additive]
 theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
@@ -1679,7 +1679,7 @@ theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (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 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 g T hy Q _inst_4 k) (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 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))) g 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 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))) g ((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)) (hy y)))
 but is expected to have type
-  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4} (x : M) (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u3} P _inst_3 T Q _inst_4 k (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x) (Subtype.mk.{succ u1} P (fun (x : P) => Membership.mem.{u1, u1} P (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) x T) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (hy y)))
+  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4} (x : M) (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} 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 u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u3} P _inst_3 T Q _inst_4 k (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x) (Subtype.mk.{succ u1} P (fun (x : P) => Membership.mem.{u1, u1} P (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) x T) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (hy y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mk' Submonoid.LocalizationMap.map_mk'ₓ'. -/
 @[to_additive]
 theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y⟩ :=
@@ -1695,7 +1695,7 @@ theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N) (u : Q), Iff (Eq.{succ u4} Q (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 g T hy Q _inst_4 k) z) u) (Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) u))
 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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u2, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (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)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (z : N) (u : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z), Iff (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u2, u3, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) u) (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) u))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u2, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (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)), Membership.mem.{u1, u1} ((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.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (z : N) (u : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z), Iff (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u2, u3, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) u) (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) u))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_spec Submonoid.LocalizationMap.map_specₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1712,7 +1712,7 @@ theorem map_spec (z u) : f.map hy k z = u ↔ k.toMap (g (f.sec z).1) = k.toMap
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} Q (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (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 g T hy Q _inst_4 k) z) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z)))))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z)))))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_right Submonoid.LocalizationMap.map_mul_rightₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1729,7 +1729,7 @@ theorem map_mul_right (z) : f.map hy k z * k.toMap (g (f.sec z).2) = k.toMap (g
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} Q (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (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 g T hy Q _inst_4 k) z)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z)) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z)) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_left Submonoid.LocalizationMap.map_mul_leftₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1746,7 +1746,7 @@ theorem map_mul_left (z) : k.toMap (g (f.sec z).2) * f.map hy k z = k.toMap (g (
 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) (z : N), Eq.{succ u2} N (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => N -> N) (MonoidHom.hasCoeToFun.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (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.{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)))) (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) (MonoidHom.hasCoeToFun.{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.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) ((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)) S) => this) (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)) N _inst_2 f) z) z
 but is expected to have type
-  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) (z : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => N) z) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (fun (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => M) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (FunLike.coe.{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) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => M) _x) (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.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{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))))) (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) S) => this) (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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y)]) N _inst_2 f) z) z
+  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) (z : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => N) z) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (fun (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (FunLike.coe.{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) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) _x) (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.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{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))))) (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) S) => this) (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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y)]) N _inst_2 f) z) z
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_id Submonoid.LocalizationMap.map_idₓ'. -/
 @[simp, to_additive]
 theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f z = z :=
@@ -1758,7 +1758,7 @@ theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {A : Type.{u5}} [_inst_5 : CommMonoid.{u5} A] {U : Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} {R : Type.{u6}} [_inst_6 : CommMonoid.{u6} R] (j : Submonoid.LocalizationMap.{u5, u6} A _inst_5 U R _inst_6) {l : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} (hl : forall (w : coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T), Membership.Mem.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u3), max (succ u3) (succ u5)} (MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => P -> A) (MonoidHom.hasCoeToFun.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) l ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (HasLiftT.mk.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (CoeTCₓ.coe.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeBase.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeSubtype.{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))))) w)) U), Eq.{max (succ u6) (succ u2)} (MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (MonoidHom.comp.{u2, u4, u6} N Q R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6)) (Submonoid.LocalizationMap.map.{u3, u4, u5, u6} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u2, u3, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u2, u5, u6} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) U (fun (x : 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.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u1), max (succ u1) (succ u5)} (MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => M -> A) (MonoidHom.hasCoeToFun.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) ((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))))) x)) U) => this) (hl (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 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))) g ((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))))) x)) (hy x)))) R _inst_6 j)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U), Eq.{max (succ u3) (succ u5)} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHom.comp.{u3, u2, u5} N Q R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U), Eq.{max (succ u3) (succ u5)} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHom.comp.{u3, u2, u5} N Q R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp_map Submonoid.LocalizationMap.map_comp_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
@@ -1783,7 +1783,7 @@ theorem map_comp_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMono
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {A : Type.{u5}} [_inst_5 : CommMonoid.{u5} A] {U : Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} {R : Type.{u6}} [_inst_6 : CommMonoid.{u6} R] (j : Submonoid.LocalizationMap.{u5, u6} A _inst_5 U R _inst_6) {l : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} (hl : forall (w : coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T), Membership.Mem.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u3), max (succ u3) (succ u5)} (MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => P -> A) (MonoidHom.hasCoeToFun.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) l ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (HasLiftT.mk.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (CoeTCₓ.coe.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeBase.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeSubtype.{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))))) w)) U) (x : N), Eq.{succ u6} R (coeFn.{max (succ u6) (succ u4), max (succ u4) (succ u6)} (MonoidHom.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (fun (_x : MonoidHom.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) => Q -> R) (MonoidHom.hasCoeToFun.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (Submonoid.LocalizationMap.map.{u3, u4, u5, u6} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (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 g T hy Q _inst_4 k) x)) (coeFn.{max (succ u6) (succ u2), max (succ u2) (succ u6)} (MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (fun (_x : MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) => N -> R) (MonoidHom.hasCoeToFun.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (Submonoid.LocalizationMap.map.{u1, u2, u5, u6} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) U (fun (x : 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.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u1), max (succ u1) (succ u5)} (MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => M -> A) (MonoidHom.hasCoeToFun.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) ((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))))) x)) U) => this) (hl (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 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))) g ((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))))) x)) (hy x)))) R _inst_6 j) x)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U) (x : N), Eq.{succ u5} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => R) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u2) (succ u5), succ u2, succ u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => R) _x) (MulHomClass.toFunLike.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u3) (succ u5), succ u3, succ u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => R) _x) (MulHomClass.toFunLike.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j) x)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U) (x : N), Eq.{succ u5} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => R) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u2) (succ u5), succ u2, succ u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Q) => R) _x) (MulHomClass.toFunLike.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u3) (succ u5), succ u3, succ u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => R) _x) (MulHomClass.toFunLike.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_map Submonoid.LocalizationMap.map_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
@@ -1825,7 +1825,7 @@ noncomputable def AwayMap.invSelf : N :=
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{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))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift Submonoid.LocalizationMap.AwayMap.liftₓ'. -/
 /-- Given `x : M`, a localization map `F : M →* N` away from `x`, and a map of `comm_monoid`s
 `g : M →* P` such that `g x` is invertible, the homomorphism induced from `N` to `P` sending
@@ -1842,7 +1842,7 @@ noncomputable def AwayMap.lift (hg : IsUnit (g x)) : N →* P :=
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) (hg : IsUnit.{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))) g x)) (a : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) N _inst_2 F) a)) (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))) g a)
 but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)) (a : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g a)
+  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)) (a : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g a)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift_eq Submonoid.LocalizationMap.AwayMap.lift_eqₓ'. -/
 @[simp]
 theorem AwayMap.lift_eq (hg : IsUnit (g x)) (a : M) : F.lift x hg (F.toMap a) = g a :=
@@ -1853,7 +1853,7 @@ theorem AwayMap.lift_eq (hg : IsUnit (g x)) (a : M) : F.lift x hg (F.toMap a) =
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) (hg : IsUnit.{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))) g x)), Eq.{max (succ u3) (succ u1)} (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.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) N _inst_2 F)) g
 but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.comp.{u2, u1, u3} M N P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F)) g
+  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.comp.{u2, u1, u3} M N P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F)) g
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift_comp Submonoid.LocalizationMap.AwayMap.lift_compₓ'. -/
 @[simp]
 theorem AwayMap.lift_comp (hg : IsUnit (g x)) : (F.lift x hg).comp F.toMap = g :=
@@ -1901,7 +1901,7 @@ noncomputable def AwayMap.negSelf : B :=
 lean 3 declaration is
   forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B], (AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) -> (forall {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))}, (IsAddUnit.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => A -> C) (AddMonoidHom.hasCoeToFun.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) g x)) -> (AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))
 but is expected to have type
-  forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B], (AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) -> (forall {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))}, (IsAddUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) x) (AddCommMonoid.toAddMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) x) _inst_6) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) _x) (AddHomClass.toFunLike.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u1} A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g x)) -> (AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))
+  forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B], (AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) -> (forall {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))}, (IsAddUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) (AddCommMonoid.toAddMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) _inst_6) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) _x) (AddHomClass.toFunLike.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u1} A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g x)) -> (AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))
 Case conversion may be inaccurate. Consider using '#align add_submonoid.localization_map.away_map.lift AddSubmonoid.LocalizationMap.AwayMap.liftₓ'. -/
 /-- Given `x : A`, a localization map `F : A →+ B` away from `x`, and a map of `add_comm_monoid`s
 `g : A →+ C` such that `g x` is invertible, the homomorphism induced from `B` to `C` sending
@@ -1920,7 +1920,7 @@ noncomputable def AwayMap.lift (hg : IsAddUnit (g x)) : B →+ C :=
 lean 3 declaration is
   forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => A -> C) (AddMonoidHom.hasCoeToFun.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) g x)) (a : A), Eq.{succ u3} C (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => B -> C) (AddMonoidHom.hasCoeToFun.{u2, u3} B C (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (AddMonoidHom.{u1, u2} A B (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5))) (fun (_x : AddMonoidHom.{u1, u2} A B (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5))) => A -> B) (AddMonoidHom.hasCoeToFun.{u1, u2} A B (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5))) (AddSubmonoid.LocalizationMap.toMap.{u1, u2} A _inst_4 (AddSubmonoid.multiples.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4) x) B _inst_5 F) a)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => A -> C) (AddMonoidHom.hasCoeToFun.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) g a)
 but is expected to have type
-  forall {A : Type.{u2}} [_inst_4 : AddCommMonoid.{u2} A] (x : A) {B : Type.{u1}} [_inst_5 : AddCommMonoid.{u1} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u2, u1} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) x) (AddCommMonoid.toAddMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) x) _inst_6) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) _x) (AddHomClass.toFunLike.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g x)) (a : A), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : B) => C) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A (fun (a : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => B) a) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u1} B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoidHom.addMonoidHomClass.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))))) (AddSubmonoid.LocalizationMap.toMap.{u2, u1} A _inst_4 (AddSubmonoid.multiples.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4) x) B _inst_5 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (AddMonoidHom.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : B) => C) _x) (AddHomClass.toFunLike.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) B C (AddZeroClass.toAdd.{u1} B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => B) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u1} B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoidHom.addMonoidHomClass.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))))) (AddSubmonoid.LocalizationMap.toMap.{u2, u1} A _inst_4 (AddSubmonoid.multiples.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4) x) B _inst_5 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) _x) (AddHomClass.toFunLike.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g a)
+  forall {A : Type.{u2}} [_inst_4 : AddCommMonoid.{u2} A] (x : A) {B : Type.{u1}} [_inst_5 : AddCommMonoid.{u1} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u2, u1} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) (AddCommMonoid.toAddMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) _inst_6) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) _x) (AddHomClass.toFunLike.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g x)) (a : A), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : B) => C) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A (fun (a : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => B) a) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u1} B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoidHom.addMonoidHomClass.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))))) (AddSubmonoid.LocalizationMap.toMap.{u2, u1} A _inst_4 (AddSubmonoid.multiples.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4) x) B _inst_5 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (AddMonoidHom.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : B) => C) _x) (AddHomClass.toFunLike.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) B C (AddZeroClass.toAdd.{u1} B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u1 u3, u1, u3} (AddMonoidHom.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u1, u3} B C (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => B) _x) (AddHomClass.toFunLike.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u1} B (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) (AddMonoidHomClass.toAddHomClass.{max u2 u1, u2, u1} (AddMonoidHom.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))) A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoidHom.addMonoidHomClass.{u2, u1} A B (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5))))) (AddSubmonoid.LocalizationMap.toMap.{u2, u1} A _inst_4 (AddSubmonoid.multiples.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4) x) B _inst_5 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) _x) (AddHomClass.toFunLike.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g a)
 Case conversion may be inaccurate. Consider using '#align add_submonoid.localization_map.away_map.lift_eq AddSubmonoid.LocalizationMap.AwayMap.lift_eqₓ'. -/
 @[simp]
 theorem AwayMap.lift_eq (hg : IsAddUnit (g x)) (a : A) : F.lift x hg (F.toMap a) = g a :=
@@ -1931,7 +1931,7 @@ theorem AwayMap.lift_eq (hg : IsAddUnit (g x)) (a : A) : F.lift x hg (F.toMap a)
 lean 3 declaration is
   forall {A : Type.{u1}} [_inst_4 : AddCommMonoid.{u1} A] (x : A) {B : Type.{u2}} [_inst_5 : AddCommMonoid.{u2} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u1, u2} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (fun (_x : AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) => A -> C) (AddMonoidHom.hasCoeToFun.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) g x)), Eq.{max (succ u3) (succ u1)} (AddMonoidHom.{u1, u3} A C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHom.comp.{u1, u2, u3} A B C (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4)) (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (AddSubmonoid.LocalizationMap.toMap.{u1, u2} A _inst_4 (AddSubmonoid.multiples.{u1} A (AddCommMonoid.toAddMonoid.{u1} A _inst_4) x) B _inst_5 F)) g
 but is expected to have type
-  forall {A : Type.{u2}} [_inst_4 : AddCommMonoid.{u2} A] (x : A) {B : Type.{u1}} [_inst_5 : AddCommMonoid.{u1} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u2, u1} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) x) (AddCommMonoid.toAddMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) x) _inst_6) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : A) => C) _x) (AddHomClass.toFunLike.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g x)), Eq.{max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHom.comp.{u2, u1, u3} A B C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (AddSubmonoid.LocalizationMap.toMap.{u2, u1} A _inst_4 (AddSubmonoid.multiples.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4) x) B _inst_5 F)) g
+  forall {A : Type.{u2}} [_inst_4 : AddCommMonoid.{u2} A] (x : A) {B : Type.{u1}} [_inst_5 : AddCommMonoid.{u1} B] (F : AddSubmonoid.LocalizationMap.AwayMap.{u2, u1} A _inst_4 x B _inst_5) {C : Type.{u3}} [_inst_6 : AddCommMonoid.{u3} C] {g : AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))} (hg : IsAddUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) (AddCommMonoid.toAddMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) x) _inst_6) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : A) => C) _x) (AddHomClass.toFunLike.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddZeroClass.toAdd.{u2} A (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4))) (AddZeroClass.toAdd.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHomClass.toAddHomClass.{max u2 u3, u2, u3} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddMonoidHom.addMonoidHomClass.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))))) g x)), Eq.{max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} A C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6))) (AddMonoidHom.comp.{u2, u1, u3} A B C (AddMonoid.toAddZeroClass.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4)) (AddMonoid.toAddZeroClass.{u1} B (AddCommMonoid.toAddMonoid.{u1} B _inst_5)) (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C _inst_6)) (AddSubmonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} A _inst_4 x B _inst_5 F C _inst_6 g hg) (AddSubmonoid.LocalizationMap.toMap.{u2, u1} A _inst_4 (AddSubmonoid.multiples.{u2} A (AddCommMonoid.toAddMonoid.{u2} A _inst_4) x) B _inst_5 F)) g
 Case conversion may be inaccurate. Consider using '#align add_submonoid.localization_map.away_map.lift_comp AddSubmonoid.LocalizationMap.AwayMap.lift_compₓ'. -/
 @[simp]
 theorem AwayMap.lift_comp (hg : IsAddUnit (g x)) : (F.lift x hg).comp F.toMap = g :=
@@ -1986,7 +1986,7 @@ noncomputable def mulEquivOfLocalizations (k : LocalizationMap S P) : N ≃* 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u3} P (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k) x) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S P _inst_3 k)) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
@@ -1999,7 +1999,7 @@ theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u1 u2, u2, u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (MulEquiv.symm.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u1 u2, u2, u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (MulEquiv.symm.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_symm_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_symm_apply {k : LocalizationMap S P} {x} :
@@ -2045,7 +2045,7 @@ def ofMulEquivOfLocalizations (k : N ≃* P) : LocalizationMap S 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : M), Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) k (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.ofMulEquivOfLocalizations_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
@@ -2071,7 +2071,7 @@ theorem ofMulEquivOfLocalizations_eq {k : N ≃* 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_applyₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
@@ -2084,7 +2084,7 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
 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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) k (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) k (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) k (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply'ₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
@@ -2097,7 +2097,7 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} {x : M} {y : P}, Iff (Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) y))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} {x : M} {y : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) y))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} {x : M} {y : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
@@ -2123,7 +2123,7 @@ theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_applyₓ'. -/
 @[simp, to_additive add_equiv_of_localizations_right_inv_apply]
 theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
@@ -2226,7 +2226,7 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
 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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) (x : P), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (fun (_x : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) => P -> M) (MulEquiv.hasCoeToFun.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : P), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => M) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : P), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => M) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) k x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_apply Submonoid.LocalizationMap.ofMulEquivOfDom_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -2252,7 +2252,7 @@ theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.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] {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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (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)))) (MulEquiv.symm.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) k) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp_symm Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symmₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -2265,7 +2265,7 @@ theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.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] {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))} {k : 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 u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.symm.{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))) k)) T) S) (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{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))) k) H)) (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)))) k x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.map.{u2, u3, max u3 u2} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k)) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) H)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.map.{u2, u3, max u3 u2} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k)) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) H)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp Submonoid.LocalizationMap.ofMulEquivOfDom_compₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) (x) :
@@ -2278,7 +2278,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.14384.14392 : 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.14405 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14405 (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.2372 : 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.14405) 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.2372 : 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.14405) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14409 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14410 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14405) (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.2372 : 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.14405) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14409) => 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.14409 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.2372 : 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.2372 : 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.2372 : 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.14745.14753 : 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.14766 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14766 (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.14766) 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.14766) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14770 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14771 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14766) (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.14766) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14770) => 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.14770 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."]
@@ -2312,7 +2312,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.2372 : 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.2372 : 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.2372 : 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.14589 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14590 : 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.14589) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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.2372 : 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.14589) (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.14955 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14956 : 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.14955) => 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.14955) (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}
@@ -2327,7 +2327,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.2372 : 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.2372 : 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.14683 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14684 : 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.14683) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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.2372 : 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.14683) (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.15053 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15054 : 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.15053) => 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.15053) (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}
@@ -2342,7 +2342,7 @@ theorem mulEquivOfMulEquiv_eq_map {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 : M), 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) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{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))
 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), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
+  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), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq Submonoid.LocalizationMap.mulEquivOfMulEquiv_eqₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T)
@@ -2355,7 +2355,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.14856 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14857 : 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.14856) => 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.14856) (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.15237 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15238 : 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.15237) => 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.15237) (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)
@@ -2369,7 +2369,7 @@ theorem mulEquivOfMulEquiv_mk' {k : LocalizationMap T Q} {j : M ≃* P} (H : S.m
 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), Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u1), max (succ u1) (succ u4)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => M -> Q) (MonoidHom.hasCoeToFun.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u1, u4} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u4} M _inst_1 S N _inst_2 Q _inst_4 f (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 u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{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))
 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), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Q) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u3} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u2, u1, u3} M _inst_1 S N _inst_2 Q _inst_4 f (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 u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
+  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), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Q) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u3} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u2, u1, u3} M _inst_1 S N _inst_2 Q _inst_4 f (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 u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_applyₓ'. -/
 @[simp, to_additive]
 theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
@@ -2434,7 +2434,7 @@ variable {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))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mk_one_eq_monoid_of_mk Localization.mk_one_eq_monoidOf_mkₓ'. -/
 @[to_additive]
 theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x :=
@@ -2522,7 +2522,7 @@ variable {f}
 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} (x : Localization.{u1} M _inst_1 S), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (Localization.{u1} M _inst_1 S) -> N) (MonoidHom.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u1, u2} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u1} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : Localization.{u2} M _inst_1 S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Localization.{u2} M _inst_1 S) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u2, u2, u1} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u2} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : Localization.{u2} M _inst_1 S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : Localization.{u2} M _inst_1 S) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u2, u2, u1} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u2} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_apply Localization.mulEquivOfQuotient_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lift f.map_units x :=
@@ -2558,7 +2558,7 @@ theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y
 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} (x : M), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Localization.{u1} M _inst_1 S) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) (fun (_x : Localization.{u1} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) (fun (_x : Localization.{u1} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
@@ -2595,7 +2595,7 @@ theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x
 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} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
@@ -2771,7 +2771,7 @@ namespace Submonoid
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {f : Submonoid.LocalizationMap.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)}, Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.toMap.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2) f) (Prod.fst.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S) (Submonoid.LocalizationMap.sec.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2) f (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (MulZeroClass.toHasZero.{u2} N (MulZeroOneClass.toMulZeroClass.{u2} N (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)))))))))) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (MulZeroClass.toHasZero.{u2} N (MulZeroOneClass.toMulZeroClass.{u2} N (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)))))))
 but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoidWithZero.{u2} M] {S : Submonoid.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M (MonoidWithZero.toMulZeroOneClass.{u2} M (CommMonoidWithZero.toMonoidWithZero.{u2} M _inst_1)))} {N : Type.{u1}} [_inst_2 : CommMonoidWithZero.{u1} N] {f : Submonoid.LocalizationMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2))) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) _inst_2)))
+  forall {M : Type.{u2}} [_inst_1 : CommMonoidWithZero.{u2} M] {S : Submonoid.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M (MonoidWithZero.toMulZeroOneClass.{u2} M (CommMonoidWithZero.toMonoidWithZero.{u2} M _inst_1)))} {N : Type.{u1}} [_inst_2 : CommMonoidWithZero.{u1} N] {f : Submonoid.LocalizationMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2))) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_zero_fst Submonoid.LocalizationMap.sec_zero_fstₓ'. -/
 @[simp]
 theorem LocalizationMap.sec_zero_fst {f : LocalizationMap S N} : f.toMap (f.sec 0).fst = 0 := by
@@ -2784,7 +2784,7 @@ namespace LocalizationWithZeroMap
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S), IsUnit.{u3} P (MonoidWithZero.toMonoid.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (fun (_x : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) => M -> P) (MonoidWithZeroHom.hasCoeToFun.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) g ((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 (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S))))) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (MonoidWithZero.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (CommMonoidWithZero.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) _inst_3)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulOneClass.toMul.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (MulOneClass.toMul.{u3} P (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))) (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (MonoidWithZeroHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (MonoidWithZeroHom.monoidWithZeroHomClass.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (MonoidWithZero.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (CommMonoidWithZero.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) _inst_3)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulOneClass.toMul.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (MulOneClass.toMul.{u3} P (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))) (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (MonoidWithZeroHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (MonoidWithZeroHom.monoidWithZeroHomClass.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_with_zero_map.lift Submonoid.LocalizationWithZeroMap.liftₓ'. -/
 /-- Given a localization map `f : M →*₀ N` for a submonoid `S ⊆ M` and a map of
 `comm_monoid_with_zero`s `g : M →*₀ P` such that `g y` is invertible for all `y : S`, the
Diff
@@ -2734,7 +2734,7 @@ instance : CommMonoidWithZero (Localization S) := by
       Localization.induction_on x <| by
         intros
         refine' mk_eq_mk_iff.mpr (r_of_eq _)
-        simp only [zero_mul, mul_zero]
+        simp only [MulZeroClass.zero_mul, MulZeroClass.mul_zero]
 
 variable {S}
 
@@ -2775,7 +2775,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_zero_fst Submonoid.LocalizationMap.sec_zero_fstₓ'. -/
 @[simp]
 theorem LocalizationMap.sec_zero_fst {f : LocalizationMap S N} : f.toMap (f.sec 0).fst = 0 := by
-  rw [localization_map.sec_spec', mul_zero]
+  rw [localization_map.sec_spec', MulZeroClass.mul_zero]
 #align submonoid.localization_map.sec_zero_fst Submonoid.LocalizationMap.sec_zero_fst
 
 namespace LocalizationWithZeroMap
@@ -2795,7 +2795,7 @@ noncomputable def lift (f : LocalizationWithZeroMap S N) (g : M →*₀ P)
   { @LocalizationMap.lift _ _ _ _ _ _ _ f.toLocalizationMap g.toMonoidHom hg with
     map_zero' :=
       by
-      rw [MonoidHom.toFun_eq_coe, localization_map.lift_spec, mul_zero, ← map_zero g, ←
+      rw [MonoidHom.toFun_eq_coe, localization_map.lift_spec, MulZeroClass.mul_zero, ← map_zero g, ←
         g.to_monoid_hom_coe]
       refine' f.to_localization_map.eq_of_eq hg _
       rw [localization_map.sec_zero_fst]
Diff
@@ -684,7 +684,7 @@ namespace MonoidHom
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (Prod.fst.{u1, u1} M (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) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f y)) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
 but is expected to have type
-  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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f y)) (Exists.{succ u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (fun (c : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
+  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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))), (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_2) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (forall (z : N), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) N (instHMul.{u2} N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) -> (forall (x : M) (y : M), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) f y)) (Exists.{succ u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (fun (c : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => Eq.{succ u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) c) y)))) -> (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2)
 Case conversion may be inaccurate. Consider using '#align monoid_hom.to_localization_map MonoidHom.toLocalizationMapₓ'. -/
 /-- Makes a localization map from a `comm_monoid` hom satisfying the characteristic predicate. -/
 @[to_additive
@@ -718,7 +718,7 @@ abbrev toMap (f : LocalizationMap S N) :=
 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} {g : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u1) (succ u2)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) f g)
 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} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g)
+  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} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x)) -> (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.ext Submonoid.LocalizationMap.extₓ'. -/
 @[ext, to_additive]
 theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f = g :=
@@ -734,7 +734,7 @@ theorem ext {f g : LocalizationMap S N} (h : ∀ x, f.toMap x = g.toMap x) : f =
 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} {g : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u1) (succ u2)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 g) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} {g : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2}, Iff (Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) f g) (forall (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 g) x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.ext_iff Submonoid.LocalizationMap.ext_iffₓ'. -/
 @[to_additive]
 theorem ext_iff {f g : LocalizationMap S N} : f = g ↔ ∀ x, f.toMap x = g.toMap x :=
@@ -758,7 +758,7 @@ theorem toMap_injective : Function.Injective (@LocalizationMap.toMap _ _ S N _)
 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) (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))
 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) (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))
+  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) (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_units Submonoid.LocalizationMap.map_unitsₓ'. -/
 @[to_additive]
 theorem map_units (f : LocalizationMap S N) (y : S) : IsUnit (f.toMap y) :=
@@ -770,7 +770,7 @@ theorem map_units (f : LocalizationMap S N) (y : S) : IsUnit (f.toMap y) :=
 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) (z : N), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (z : N), Exists.{succ u2} (Prod.{u2, u2} M (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))) (fun (x : Prod.{u2, u2} M (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) x))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) x)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (z : N), Exists.{succ u2} (Prod.{u2, u2} M (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))) (fun (x : Prod.{u2, u2} M (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) x))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) x)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) x)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.surj Submonoid.LocalizationMap.surjₓ'. -/
 @[to_additive]
 theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2 = f.toMap x.1 :=
@@ -782,7 +782,7 @@ theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2
 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) {x : M} {y : M}, Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Exists.{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) (fun (c : 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 u1} M (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) (Exists.{succ u2} (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)) (fun (c : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y)))
+  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) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) (Exists.{succ u2} (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)) (fun (c : 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 u2} M (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_iff_exists Submonoid.LocalizationMap.eq_iff_existsₓ'. -/
 @[to_additive]
 theorem eq_iff_exists (f : LocalizationMap S N) {x y} :
@@ -810,7 +810,7 @@ noncomputable def sec (f : LocalizationMap S N) (z : N) : M × 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} (z : N), Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
 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} (z : N), Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+  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} (z : N), Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_spec Submonoid.LocalizationMap.sec_specₓ'. -/
 @[to_additive]
 theorem sec_spec {f : LocalizationMap S N} (z : N) :
@@ -823,7 +823,7 @@ theorem sec_spec {f : LocalizationMap S N} (z : N) :
 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} (z : N), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) z)
 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} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) z)
+  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} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) z)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_spec' Submonoid.LocalizationMap.sec_spec'ₓ'. -/
 @[to_additive]
 theorem sec_spec' {f : LocalizationMap S N} (z : N) :
@@ -835,7 +835,7 @@ theorem sec_spec' {f : LocalizationMap S N} (z : N) :
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y)))) z) (Eq.{succ u2} N w (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y)))) z) (Eq.{succ u1} N w (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y)))) z) (Eq.{succ u1} N w (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_left Submonoid.LocalizationMap.mul_inv_leftₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `w * (f y)⁻¹ = z ↔ w = f y * z`. -/
@@ -852,7 +852,7 @@ theorem mul_inv_left {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) (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) (w : N) (z : N), Iff (Eq.{succ u2} N z (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) w ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))))) (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) w)
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N z (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))))) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) w)
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) (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)) (w : N) (z : N), Iff (Eq.{succ u1} N z (HMul.hMul.{u1, u1, u1} N N N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) w (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))))) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) w)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv_right Submonoid.LocalizationMap.mul_inv_rightₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `w : M, z : N` and `y ∈ S`, we have `z = w * (f y)⁻¹ ↔ z * f y = w`. -/
@@ -868,7 +868,7 @@ theorem mul_inv_right {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z)
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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₁ : M} {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} {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}, Iff (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₁) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f x₂) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y₂))))) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ ((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₂))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₂ ((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₁))))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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₁ : M} {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)} {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)}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₁) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₁) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₂) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₂) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₂) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₂) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₂) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₂) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₂) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₂) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₂))))) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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₁ : M} {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)} {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)}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₁) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₁) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₁)))) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₂) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f x₂) (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y₂) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y₂))))) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_inv Submonoid.LocalizationMap.mul_invₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that
 `f(S) ⊆ Nˣ`, for all `x₁ x₂ : M` and `y₁, y₂ ∈ S`, we have
@@ -890,7 +890,7 @@ theorem mul_inv {f : M →* N} (h : ∀ y : S, IsUnit (f y)) {x₁ x₂} {y₁ y
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (hf : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : 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 u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) y)) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) hf) z))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))))) z)))
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (hf : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) y)) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) z) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) z))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z)))
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (hf : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) y)) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) z) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) hf) z))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_inj Submonoid.LocalizationMap.inv_injₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y, z ∈ S`, we have `(f y)⁻¹ = (f z)⁻¹ → f y = f z`. -/
@@ -908,7 +908,7 @@ theorem inv_inj {f : M →* N} (hf : ∀ y : S, IsUnit (f y)) {y z}
 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 : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))} (h : forall (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), IsUnit.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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))) {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} {z : N}, (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) f ((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)) z) (OfNat.ofNat.{u2} N 1 (OfNat.mk.{u2} N 1 (One.one.{u2} N (MulOneClass.toHasOne.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) -> (Eq.{succ u2} N ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (HasLiftT.mk.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (CoeTCₓ.coe.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (coeBase.{succ u2, succ u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) N (Units.hasCoe.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Inv.inv.{u2} (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Units.hasInv.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (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) -> (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHom.hasCoeToFun.{u1, u2} (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) (Units.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (IsUnit.liftRight.{u1, u2} (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) N (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u2} N _inst_2) (MonoidHom.restrict.{u1, u2, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) N (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) f S) h) y))) z)
 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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : N}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Monoid.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2))))) -> (Eq.{succ u1} N (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))) z)
+  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 : MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))} (h : forall (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)), IsUnit.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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))) {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)} {z : N}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) f (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)) z) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) 1 (One.toOfNat1.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Monoid.toOne.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2))))) -> (Eq.{succ u1} N (Units.val.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2) (Inv.inv.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) y) (Units.instInvUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (fun (_x : 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)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) => Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MulOneClass.toMul.{u2} (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)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S))) (MulOneClass.toMul.{u1} (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (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)) (Units.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} (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)) (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S)) (Units.instMulOneClassUnits.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (IsUnit.liftRight.{u2, u1} (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)) N (Submonoid.toMonoid.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) S) (CommMonoid.toMonoid.{u1} N _inst_2) (MonoidHom.restrict.{u2, u1, u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) N (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) f S) h) y))) z)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.inv_unique Submonoid.LocalizationMap.inv_uniqueₓ'. -/
 /-- Given a monoid hom `f : M →* N` and submonoid `S ⊆ M` such that `f(S) ⊆ Nˣ`, for all
 `y ∈ S`, `(f y)⁻¹` is unique. -/
@@ -925,7 +925,7 @@ variable (f : LocalizationMap S N)
 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) {x : M} {y : M} {c : 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 u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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))))) c) y))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
+  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) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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)) c) y))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancelₓ'. -/
 @[to_additive]
 theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
@@ -942,7 +942,7 @@ theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
 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) {x : M} {y : M} {c : 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 u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x ((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))))) c))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) y ((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))))) c)))) -> (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y (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)) c)))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
+  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) {x : M} {y : M} {c : 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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) c))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y (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)) c)))) -> (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_left_cancel Submonoid.LocalizationMap.map_left_cancelₓ'. -/
 @[to_additive]
 theorem map_left_cancel {x y} {c : S} (h : f.toMap (x * c) = f.toMap (y * c)) :
@@ -987,7 +987,7 @@ theorem mk'_mul (x₁ x₂ : M) (y₁ y₂ : S) : f.mk' (x₁ * x₂) (y₁ * y
 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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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) (x : M), Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_one Submonoid.LocalizationMap.mk'_oneₓ'. -/
 @[to_additive]
 theorem mk'_one (x) : f.mk' x (1 : S) = f.toMap x := by
@@ -1023,7 +1023,7 @@ theorem mk'_surjective (z : N) : ∃ (x : _)(y : S), f.mk' x y = z :=
 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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_spec Submonoid.LocalizationMap.mk'_specₓ'. -/
 @[to_additive]
 theorem mk'_spec (x) (y : S) : f.mk' x y * f.toMap y = f.toMap x :=
@@ -1035,7 +1035,7 @@ theorem mk'_spec (x) (y : S) : f.mk' x y * f.toMap y = f.toMap x :=
 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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_spec' Submonoid.LocalizationMap.mk'_spec'ₓ'. -/
 @[to_additive]
 theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_comm, mk'_spec]
@@ -1046,7 +1046,7 @@ theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_
 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) {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} {z : N}, Iff (Eq.{succ u2} N z (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {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)} {z : N}, Iff (Eq.{succ u1} N z (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {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)} {z : N}, Iff (Eq.{succ u1} N z (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Eq.{succ u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_mk'_iff_mul_eq Submonoid.LocalizationMap.eq_mk'_iff_mul_eqₓ'. -/
 @[to_additive]
 theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.toMap x :=
@@ -1058,7 +1058,7 @@ theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.
 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) {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} {z : N}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) z (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) ((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))))
 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) {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)} {z : N}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))))
+  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) {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)} {z : N}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y) z) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (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)) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) z (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (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))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq_mul Submonoid.LocalizationMap.mk'_eq_iff_eq_mulₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.toMap y := by
@@ -1070,7 +1070,7 @@ theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.
 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) {x₁ : M} {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} {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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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₁)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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₂)))
 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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₂)))
+  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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₁)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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₂)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq Submonoid.LocalizationMap.mk'_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
@@ -1089,7 +1089,7 @@ theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : 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) {x₁ : M} {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} {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}, Iff (Eq.{succ u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ ((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₂))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₂ ((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₁))))
 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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
+  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) {x₁ : M} {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)} {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)}, Iff (Eq.{succ u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₁ y₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y₂)) (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ (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₂))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₂ (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₁))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_eq_iff_eq' Submonoid.LocalizationMap.mk'_eq_iff_eq'ₓ'. -/
 @[to_additive]
 theorem mk'_eq_iff_eq' {x₁ x₂} {y₁ y₂ : S} :
@@ -1128,7 +1128,7 @@ protected theorem eq' {a₁ b₁} {a₂ b₂ : 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] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 g) x) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 g) y))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) y))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) (g : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3) {x : M} {y : M}, Iff (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 g) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_iff_eq Submonoid.LocalizationMap.eq_iff_eqₓ'. -/
 @[to_additive]
 theorem eq_iff_eq (g : LocalizationMap S P) {x y} : f.toMap x = f.toMap y ↔ g.toMap x = g.toMap y :=
@@ -1219,7 +1219,7 @@ theorem mk'_self (x) (H : x ∈ S) : f.mk' x ⟨x, H⟩ = 1 := by convert mk'_se
 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) (x₁ : M) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ x₂) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (x₁ : M) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
+  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) (x₁ : M) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_mk'_eq_mk'_of_mul Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mulₓ'. -/
 @[to_additive]
 theorem mul_mk'_eq_mk'_of_mul (x₁ x₂) (y : S) : f.toMap x₁ * f.mk' x₂ y = f.mk' (x₁ * x₂) y := by
@@ -1231,7 +1231,7 @@ theorem mul_mk'_eq_mk'_of_mul (x₁ x₂) (y : S) : f.toMap x₁ * f.mk' x₂ y
 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) (x₁ : M) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x₂ y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x₁ x₂) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (x₁ : M) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x₁) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
+  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) (x₁ : M) (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 u1} N (HMul.hMul.{u1, u1, u1} N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x₁) N (instHMul.{u1} N (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x₂ y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x₁)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x₁ x₂) y)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_eq_mk'_of_mul Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mulₓ'. -/
 @[to_additive]
 theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁ = f.mk' (x₁ * x₂) y := by
@@ -1243,7 +1243,7 @@ theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁
 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) (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 u2} N (HMul.hMul.{u2, u2, u2} N N N (instHMul.{u2} N (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u1} M 1 (OfNat.mk.{u1} M 1 (One.one.{u1} M (MulOneClass.toHasOne.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) y)) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M (Monoid.toOne.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
+  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) (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 u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) N ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (MulOneClass.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (Monoid.toMulOneClass.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (CommMonoid.toMonoid.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (OfNat.ofNat.{u2} M 1 (One.toOfNat1.{u2} M (Monoid.toOne.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) y)) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_mk'_one_eq_mk' Submonoid.LocalizationMap.mul_mk'_one_eq_mk'ₓ'. -/
 @[to_additive]
 theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
@@ -1255,7 +1255,7 @@ theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
 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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x ((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)) y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (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)) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_cancel_right Submonoid.LocalizationMap.mk'_mul_cancel_rightₓ'. -/
 @[simp, to_additive]
 theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
@@ -1267,7 +1267,7 @@ theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
 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) (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 u2} N (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((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) y) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (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 u1} N (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f (HMul.hMul.{u2, u2, u2} M M M (instHMul.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) (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) y) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mk'_mul_cancel_left Submonoid.LocalizationMap.mk'_mul_cancel_leftₓ'. -/
 @[to_additive]
 theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := by
@@ -1279,7 +1279,7 @@ theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := b
 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) (j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (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), IsUnit.{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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) ((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))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) (j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) (j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.is_unit_comp Submonoid.LocalizationMap.isUnit_compₓ'. -/
 @[to_additive]
 theorem isUnit_comp (j : N →* P) (y : S) : IsUnit (j.comp f.toMap y) :=
@@ -1294,7 +1294,7 @@ variable {g : 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) {g : 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))}, (forall (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), IsUnit.{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))) g ((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))) -> (forall {x : M} {y : M}, (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} P (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))) g x) (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))) g y)))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) -> (forall {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) -> (forall {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.eq_of_eq Submonoid.LocalizationMap.eq_of_eqₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g(S) ⊆ units P`, `f x = f y → g x = g y` for all `x y : M`. -/
@@ -1313,7 +1313,7 @@ theorem eq_of_eq (hg : ∀ y : S, IsUnit (g y)) {x y} (h : f.toMap x = f.toMap y
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (forall (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), 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))) g ((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) -> (forall (k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g 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) {g : 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))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q], (forall (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)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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.2398 : 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))))) g (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) -> (forall (k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (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.2398 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2398 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2398 : 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))))) g y))))
+  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) {g : 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))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q], (forall (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)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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.2372 : 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))))) g (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) -> (forall (k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4) {x : M} {y : M}, (Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) y)) -> (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (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.2372 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2372 : 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))))) g x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u4, u3} P _inst_3 T Q _inst_4 k) (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.2372 : 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))))) g y))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.comp_eq_of_eq Submonoid.LocalizationMap.comp_eq_of_eqₓ'. -/
 /-- Given `comm_monoid`s `M, P`, localization maps `f : M →* N, k : P →* Q` for submonoids
 `S, T` respectively, and `g : M →* P` such that `g(S) ⊆ T`, `f x = f y` implies
@@ -1332,7 +1332,7 @@ variable (hg : ∀ y : S, IsUnit (g y))
 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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (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), IsUnit.{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))) g ((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))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
 but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
+  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift Submonoid.LocalizationMap.liftₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
@@ -1359,7 +1359,7 @@ variable {S g}
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : 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 u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g x) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (HasLiftT.mk.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (CoeTCₓ.coe.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (coeBase.{succ u3, succ u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) P (Units.hasCoe.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Inv.inv.{u3} (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Units.hasInv.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => (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) -> (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.hasCoeToFun.{u1, u3} (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) (Units.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{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) (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S)) (Units.mulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (IsUnit.liftRight.{u1, u3} (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) P (Submonoid.toMonoid.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) S) (CommMonoid.toMonoid.{u3} P _inst_3) (MonoidHom.restrict.{u1, u3, u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) P (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.submonoidClass.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) g S) hg) y))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (Units.val.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3) (Inv.inv.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) y) (Units.instInvUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (fun (_x : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulOneClass.toMul.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S))) (MulOneClass.toMul.{u2} (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (IsUnit.liftRight.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) P (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S) (CommMonoid.toMonoid.{u2} P _inst_3) (MonoidHom.restrict.{u3, u2, u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) P (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) g S) hg) y))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (Units.val.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3) (Inv.inv.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) y) (Units.instInvUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (fun (_x : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) => Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MulOneClass.toMul.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S))) (MulOneClass.toMul.{u2} (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Units.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S)) (Units.instMulOneClassUnits.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (IsUnit.liftRight.{u3, u2} (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) P (Submonoid.toMonoid.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1) S) (CommMonoid.toMonoid.{u2} P _inst_3) (MonoidHom.restrict.{u3, u2, u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) P (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.instSubmonoidClassSubmonoidInstSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) g S) hg) y))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk' Submonoid.LocalizationMap.lift_mk'ₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M` and a map of `comm_monoid`s
 `g : M →* P` such that `g y` is invertible for all `y : S`, the homomorphism induced from
@@ -1377,7 +1377,7 @@ theorem lift_mk' (x y) : f.lift hg (f.mk' x y) = g x * ↑(IsUnit.liftRight (g.r
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N) (v : P), Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} P (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 but is expected to have type
-  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
+  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec Submonoid.LocalizationMap.lift_specₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v : P`, we have
@@ -1393,7 +1393,7 @@ theorem lift_spec (z v) : f.lift hg z = v ↔ g (f.sec z).1 = g (f.sec z).2 * v
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N) (w : P) (v : P), Iff (Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 but is expected to have type
-  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (w : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
+  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) {g : 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))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) (z : N) (w : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (v : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) w) v) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))) w) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) v))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_spec_mul Submonoid.LocalizationMap.lift_spec_mulₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N, v w : P`, we have
@@ -1413,7 +1413,7 @@ theorem lift_spec_mul (z w v) : f.lift hg z * w = v ↔ g (f.sec z).1 * w = g (f
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : M) (v : P) (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), Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u3} P (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))) g x) (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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)) v))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (v : P) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) v))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) (x : M) (v : P) (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f x y)) v) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (instHMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (MulOneClass.toMul.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Monoid.toMulOneClass.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) v))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mk'_spec Submonoid.LocalizationMap.lift_mk'_specₓ'. -/
 @[to_additive]
 theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y * v := by
@@ -1425,7 +1425,7 @@ theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y *
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N), Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+  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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_right Submonoid.LocalizationMap.lift_mul_rightₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
@@ -1441,7 +1441,7 @@ theorem lift_mul_right (z) : f.lift hg z * g (f.sec z).2 = g (f.sec z).1 :=
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) (z : N), Eq.{succ u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))
 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
+  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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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))) (z : N), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (MulOneClass.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (Monoid.toMulOneClass.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) _inst_3)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) z)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u1} M _inst_1 S N _inst_2 f z)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_mul_left Submonoid.LocalizationMap.lift_mul_leftₓ'. -/
 /-- Given a localization map `f : M →* N` for a submonoid `S ⊆ M`, if a `comm_monoid` map
 `g : M →* P` induces a map `f.lift hg : N →* P` then for all `z : N`, we have
@@ -1457,7 +1457,7 @@ theorem lift_mul_left (z) : g (f.sec z).2 * f.lift hg z = g (f.sec z).1 := by
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (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))) g 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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 : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hg : forall (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)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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)) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g (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 : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq Submonoid.LocalizationMap.lift_eqₓ'. -/
 @[simp, to_additive]
 theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
@@ -1469,7 +1469,7 @@ theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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 : Prod.{u1, u1} M (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)} {y : Prod.{u1, u1} M (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)}, Iff (Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (Prod.fst.{u1, u1} M (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) x) (Prod.snd.{u1, u1} M (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) x))) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f (Prod.fst.{u1, u1} M (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) y) (Prod.snd.{u1, u1} M (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) y)))) (Eq.{succ u3} P (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))) g (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Prod.fst.{u1, u1} M (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) x) ((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))))) (Prod.snd.{u1, u1} M (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) y)))) (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))) g (HMul.hMul.{u1, u1, u1} M M M (instHMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (Prod.fst.{u1, u1} M (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) y) ((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))))) (Prod.snd.{u1, u1} M (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) x)))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) {x : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))} {y : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x)))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))) {x : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))} {y : Prod.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S))}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.mk'.{u3, u1} M _inst_1 S N _inst_2 f (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (HMul.hMul.{u3, u3, u3} M M M (instHMul.{u3} M (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) y) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) x)))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_eq_iff Submonoid.LocalizationMap.lift_eq_iffₓ'. -/
 @[to_additive]
 theorem lift_eq_iff {x y : M × S} :
@@ -1482,7 +1482,7 @@ theorem lift_eq_iff {x y : M × 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] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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.{max (succ u3) (succ u1)} (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.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) g
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHom.comp.{u3, u1, u2} M N P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f)) g
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y))), Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHom.comp.{u3, u1, u2} M N P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f)) g
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_comp Submonoid.LocalizationMap.lift_compₓ'. -/
 @[simp, to_additive]
 theorem lift_comp : (f.lift hg).comp f.toMap = g := by ext <;> exact f.lift_eq hg _
@@ -1509,7 +1509,7 @@ theorem lift_of_comp (j : N →* P) : f.lift (f.isUnit_comp j) = j :=
 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) {j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (a : M), Eq.{succ u3} P (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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) a) (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))) (MonoidHom.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) j k)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (a : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) j k)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (a : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) j (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (MonoidHom.comp.{u1, u3, u2} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) k (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f)) a)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) j k)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.epic_of_localization_map Submonoid.LocalizationMap.epic_of_localizationMapₓ'. -/
 @[to_additive]
 theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a = k.comp f.toMap a) :
@@ -1523,7 +1523,7 @@ theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a =
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))) {j : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (x : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) j (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (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))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) j (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))) {j : MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))}, (forall (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) j (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x)) -> (Eq.{max (succ u3) (succ u2)} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg) j)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_unique Submonoid.LocalizationMap.lift_uniqueₓ'. -/
 @[to_additive]
 theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg = j :=
@@ -1539,7 +1539,7 @@ theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg
 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) (x : N), Eq.{succ u2} N (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => N -> N) (MonoidHom.hasCoeToFun.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x) x
 but is expected to have type
-  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) (x : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => N) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u2, u1} M _inst_1 S N _inst_2 f)) x) x
+  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) (x : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => N) x) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u1, u2, u2} M _inst_1 S N _inst_2 N _inst_2 f (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u2, u1} M _inst_1 S N _inst_2 f)) x) x
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_id Submonoid.LocalizationMap.lift_idₓ'. -/
 @[simp, to_additive]
 theorem lift_id (x) : f.lift f.map_units x = x :=
@@ -1551,7 +1551,7 @@ theorem lift_id (x) : f.lift f.map_units x = x :=
 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} (z : N), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S P _inst_3 k)) z)) z
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) z
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} (z : N), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) z)) z
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_left_inverse Submonoid.LocalizationMap.lift_left_inverseₓ'. -/
 /-- Given two localization maps `f : M →* N, k : M →* P` for a submonoid `S ⊆ M`,
 the hom from `P` to `N` induced by `f` is left inverse to the hom from `N` to `P`
@@ -1583,7 +1583,7 @@ theorem lift_left_inverse {k : LocalizationMap S P} (z : N) :
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))), Iff (Function.Surjective.{succ u2, succ u3} N P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (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 (x : Prod.{u1, u1} M (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 u3} P (HMul.hMul.{u3, u3, u3} P P P (instHMul.{u3} P (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) v (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) x)))) (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))) g (Prod.fst.{u1, u1} M (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) x))))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Surjective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} P (HMul.hMul.{u2, u2, u2} P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) P (instHMul.{u2} P (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) v (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Surjective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (v : P), Exists.{succ u1} (Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) (fun (x : Prod.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))) => Eq.{succ u2} P (HMul.hMul.{u2, u2, u2} P ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))) P (instHMul.{u2} P (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) v (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) (Prod.snd.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u1, u1} M (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) x))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_surjective_iff Submonoid.LocalizationMap.lift_surjective_iffₓ'. -/
 @[to_additive]
 theorem lift_surjective_iff :
@@ -1607,7 +1607,7 @@ theorem lift_surjective_iff :
 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) {g : 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))} (hg : forall (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), IsUnit.{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))) g ((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))), Iff (Function.Injective.{succ u2, succ u3} N P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u3} P (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))) g x) (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))) g y)))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Injective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hg : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), IsUnit.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (CommMonoid.toMonoid.{u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) _inst_3) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y))), Iff (Function.Injective.{succ u3, succ u2} N P (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} N P (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f g hg))) (forall (x : M) (y : M), Iff (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) y)) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.lift_injective_iff Submonoid.LocalizationMap.lift_injective_iffₓ'. -/
 @[to_additive]
 theorem lift_injective_iff :
@@ -1635,7 +1635,7 @@ variable {T : Submonoid P} (hy : ∀ y : S, g y ∈ T) {Q : Type _} [CommMonoid
 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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (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), 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))) g ((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) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
 but is expected to have type
-  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
+  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], (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))}, (forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u3, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) -> (forall {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q], (Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4) -> (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)))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map Submonoid.LocalizationMap.mapₓ'. -/
 /-- Given a `comm_monoid` homomorphism `g : M →* P` where for submonoids `S ⊆ M, T ⊆ P` we have
 `g(S) ⊆ T`, the induced monoid homomorphism from the localization of `M` at `S` to the
@@ -1655,7 +1655,7 @@ variable {k}
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} Q (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 g T hy Q _inst_4 k) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g x))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u4), 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))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, 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))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, 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))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{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.{u3, u2, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (x : M), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u4), 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))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, 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))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, 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))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{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.{u3, u2, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u2} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u1} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_eq Submonoid.LocalizationMap.map_eqₓ'. -/
 @[to_additive]
 theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
@@ -1667,7 +1667,7 @@ theorem map_eq (x) : f.map hy k (f.toMap x) = k.toMap (g x) :=
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u1)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHom.comp.{u1, u2, u4} M N Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (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 g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u1, u3, u4} M P Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) g)
 but is expected to have type
-  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u3)} (MonoidHom.{u4, u3} M Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHom.comp.{u4, u2, u3} M N Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u4, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u4, u1, u3} M P Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u1, u3} P _inst_3 T Q _inst_4 k) g)
+  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4}, Eq.{max (succ u4) (succ u3)} (MonoidHom.{u4, u3} M Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHom.comp.{u4, u2, u3} M N Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.toMap.{u4, u2} M _inst_1 S N _inst_2 f)) (MonoidHom.comp.{u4, u1, u3} M P Q (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.toMap.{u1, u3} P _inst_3 T Q _inst_4 k) g)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp Submonoid.LocalizationMap.map_compₓ'. -/
 @[simp, to_additive]
 theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
@@ -1679,7 +1679,7 @@ theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (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 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 g T hy Q _inst_4 k) (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 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))) g 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 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))) g ((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)) (hy y)))
 but is expected to have type
-  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4} (x : M) (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u3} P _inst_3 T Q _inst_4 k (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x) (Subtype.mk.{succ u1} P (fun (x : P) => Membership.mem.{u1, u1} P (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) x T) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (hy y)))
+  forall {M : Type.{u4}} [_inst_1 : CommMonoid.{u4} M] {S : Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u4, u2} M _inst_1 S N _inst_2) {g : MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) T) {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u1, u3} P _inst_3 T Q _inst_4} (x : M) (y : Subtype.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)))) x S)), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u4, u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) (Submonoid.LocalizationMap.mk'.{u4, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u1, u3} P _inst_3 T Q _inst_4 k (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g x) (Subtype.mk.{succ u1} P (fun (x : P) => Membership.mem.{u1, u1} P (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) x T) (FunLike.coe.{max (succ u4) (succ u1), succ u4, succ u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u4 u1, u4, u1} (MonoidHom.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u4, u1} M P (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Subtype.val.{succ u4} M (fun (x : M) => Membership.mem.{u4, u4} M (Set.{u4} M) (Set.instMembershipSet.{u4} M) x (SetLike.coe.{u4, u4} (Submonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u4} M (Monoid.toMulOneClass.{u4} M (CommMonoid.toMonoid.{u4} M _inst_1))) S)) y)) (hy y)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mk' Submonoid.LocalizationMap.map_mk'ₓ'. -/
 @[to_additive]
 theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y⟩ :=
@@ -1695,7 +1695,7 @@ theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N) (u : Q), Iff (Eq.{succ u4} Q (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 g T hy Q _inst_4 k) z) u) (Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) u))
 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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u2, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (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)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (z : N) (u : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z), Iff (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u2, u3, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) u) (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) u))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u1}} [_inst_3 : CommMonoid.{u1} P] (f : Submonoid.LocalizationMap.{u2, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} {T : Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))} (hy : forall (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)), Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u1, u4} P _inst_3 T Q _inst_4} (z : N) (u : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z), Iff (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (FunLike.coe.{max (succ u3) (succ u4), succ u3, succ u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u4, u3, u4} (MonoidHom.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u4} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u2, u3, u1, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) u) (Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (Prod.fst.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z)))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} P Q (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u1, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} P (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u1} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} P (CommMonoid.toMonoid.{u1} P _inst_3))))) g (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)) (Prod.snd.{u2, u2} M (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)) (Submonoid.LocalizationMap.sec.{u2, u3} M _inst_1 S N _inst_2 f z))))) u))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_spec Submonoid.LocalizationMap.map_specₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1712,7 +1712,7 @@ theorem map_spec (z u) : f.map hy k z = u ↔ k.toMap (g (f.sec z).1) = k.toMap
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} Q (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (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 g T hy Q _inst_4 k) z) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z)))))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z)))))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) _inst_4)))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z)))))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_right Submonoid.LocalizationMap.map_mul_rightₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1729,7 +1729,7 @@ theorem map_mul_right (z) : f.map hy k z * k.toMap (g (f.sec z).2) = k.toMap (g
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} Q (HMul.hMul.{u4, u4, u4} Q Q Q (instHMul.{u4} Q (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g ((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))))) (Prod.snd.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))) (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 g T hy Q _inst_4 k) z)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u3, u4} P _inst_3 T Q _inst_4 k) (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))) g (Prod.fst.{u1, u1} M (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) (Submonoid.LocalizationMap.sec.{u1, u2} M _inst_1 S N _inst_2 f z))))
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z)) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {g : MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} (hy : forall (y : Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)), Membership.mem.{u2, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) y)) T) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u2, u4} P _inst_3 T Q _inst_4} (z : N), Eq.{succ u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (HMul.hMul.{u4, u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) z) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (instHMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (MulOneClass.toMul.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (Monoid.toMulOneClass.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (CommMonoid.toMonoid.{u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) _inst_4)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Subtype.val.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Set.{u3} M) (Set.instMembershipSet.{u3} M) x (SetLike.coe.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) S)) (Prod.snd.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))) (FunLike.coe.{max (succ u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u4} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u3, u1, u2, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) z)) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u4} P Q (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u4} P _inst_3 T Q _inst_4 k) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) g (Prod.fst.{u3, u3} M (Subtype.{succ u3} M (fun (x : M) => Membership.mem.{u3, u3} M (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (SetLike.instMembership.{u3, u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)))) x S)) (Submonoid.LocalizationMap.sec.{u3, u1} M _inst_1 S N _inst_2 f z))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_mul_left Submonoid.LocalizationMap.map_mul_leftₓ'. -/
 /-- Given localization maps `f : M →* N, k : P →* Q` for submonoids `S, T` respectively, if a
 `comm_monoid` homomorphism `g : M →* P` induces a `f.map hy k : N →* Q`, then for all `z : N`,
@@ -1746,7 +1746,7 @@ theorem map_mul_left (z) : k.toMap (g (f.sec z).2) * f.map hy k z = k.toMap (g (
 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) (z : N), Eq.{succ u2} N (coeFn.{succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => N -> N) (MonoidHom.hasCoeToFun.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (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.{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)))) (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) (MonoidHom.hasCoeToFun.{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.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) ((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)) S) => this) (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)) N _inst_2 f) z) z
 but is expected to have type
-  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) (z : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => N) z) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (fun (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => M) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (FunLike.coe.{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) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => M) _x) (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.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{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))))) (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) S) => this) (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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y)]) N _inst_2 f) z) z
+  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) (z : N), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => N) z) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => N) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u2} N N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.map.{u1, u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S (fun (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u1, u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => M) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (FunLike.coe.{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) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => M) _x) (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.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{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))))) (MonoidHom.id.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) S) => this) (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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y)]) N _inst_2 f) z) z
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_id Submonoid.LocalizationMap.map_idₓ'. -/
 @[simp, to_additive]
 theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f z = z :=
@@ -1758,7 +1758,7 @@ theorem map_id (z : N) : f.map (fun y => show MonoidHom.id M y ∈ S from y.2) f
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {A : Type.{u5}} [_inst_5 : CommMonoid.{u5} A] {U : Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} {R : Type.{u6}} [_inst_6 : CommMonoid.{u6} R] (j : Submonoid.LocalizationMap.{u5, u6} A _inst_5 U R _inst_6) {l : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} (hl : forall (w : coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T), Membership.Mem.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u3), max (succ u3) (succ u5)} (MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => P -> A) (MonoidHom.hasCoeToFun.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) l ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (HasLiftT.mk.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (CoeTCₓ.coe.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeBase.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeSubtype.{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))))) w)) U), Eq.{max (succ u6) (succ u2)} (MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (MonoidHom.comp.{u2, u4, u6} N Q R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6)) (Submonoid.LocalizationMap.map.{u3, u4, u5, u6} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u2, u3, u4} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u2, u5, u6} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) U (fun (x : 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.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u1), max (succ u1) (succ u5)} (MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => M -> A) (MonoidHom.hasCoeToFun.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) ((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))))) x)) U) => this) (hl (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 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))) g ((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))))) x)) (hy x)))) R _inst_6 j)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U), Eq.{max (succ u3) (succ u5)} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHom.comp.{u3, u2, u5} N Q R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U), Eq.{max (succ u3) (succ u5)} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHom.comp.{u3, u2, u5} N Q R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k)) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_comp_map Submonoid.LocalizationMap.map_comp_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
@@ -1783,7 +1783,7 @@ theorem map_comp_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMono
 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) {g : 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))} {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (hy : forall (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), 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))) g ((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) {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {A : Type.{u5}} [_inst_5 : CommMonoid.{u5} A] {U : Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} {R : Type.{u6}} [_inst_6 : CommMonoid.{u6} R] (j : Submonoid.LocalizationMap.{u5, u6} A _inst_5 U R _inst_6) {l : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))} (hl : forall (w : coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T), Membership.Mem.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u3), max (succ u3) (succ u5)} (MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => P -> A) (MonoidHom.hasCoeToFun.{u3, u5} P A (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) l ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (HasLiftT.mk.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (CoeTCₓ.coe.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeBase.{succ u3, succ u3} (coeSort.{succ u3, succ (succ u3)} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) Type.{u3} (SetLike.hasCoeToSort.{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)))) T) P (coeSubtype.{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))))) w)) U) (x : N), Eq.{succ u6} R (coeFn.{max (succ u6) (succ u4), max (succ u4) (succ u6)} (MonoidHom.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (fun (_x : MonoidHom.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) => Q -> R) (MonoidHom.hasCoeToFun.{u4, u6} Q R (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (Submonoid.LocalizationMap.map.{u3, u4, u5, u6} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (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 g T hy Q _inst_4 k) x)) (coeFn.{max (succ u6) (succ u2), max (succ u2) (succ u6)} (MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (fun (_x : MonoidHom.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) => N -> R) (MonoidHom.hasCoeToFun.{u2, u6} N R (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u6} R (CommMonoid.toMonoid.{u6} R _inst_6))) (Submonoid.LocalizationMap.map.{u1, u2, u5, u6} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) U (fun (x : 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.{u5, u5} A (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (SetLike.hasMem.{u5, u5} (Submonoid.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) A (Submonoid.setLike.{u5} A (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)))) (coeFn.{max (succ u5) (succ u1), max (succ u1) (succ u5)} (MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (fun (_x : MonoidHom.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) => M -> A) (MonoidHom.hasCoeToFun.{u1, u5} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5))) (MonoidHom.comp.{u1, u3, u5} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u5} A (CommMonoid.toMonoid.{u5} A _inst_5)) l g) ((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))))) x)) U) => this) (hl (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 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))) g ((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))))) x)) (hy x)))) R _inst_6 j) x)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U) (x : N), Eq.{succ u5} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Q) => R) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u2) (succ u5), succ u2, succ u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Q) => R) _x) (MulHomClass.toFunLike.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u3) (succ u5), succ u3, succ u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => R) _x) (MulHomClass.toFunLike.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j) x)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {g : MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} (hy : forall (y : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)), Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} 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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) y)) T) {Q : Type.{u2}} [_inst_4 : CommMonoid.{u2} Q] {k : Submonoid.LocalizationMap.{u4, u2} P _inst_3 T Q _inst_4} {A : Type.{u6}} [_inst_5 : CommMonoid.{u6} A] {U : Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} {R : Type.{u5}} [_inst_6 : CommMonoid.{u5} R] (j : Submonoid.LocalizationMap.{u6, u5} A _inst_5 U R _inst_6) {l : MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))} (hl : forall (w : Subtype.{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)), Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => A) (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u4) (succ u6), succ u4, succ u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => A) _x) (MulHomClass.toFunLike.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u4 u6, u4, u6} (MonoidHom.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u4, u6} P A (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) l (Subtype.val.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Set.{u4} P) (Set.instMembershipSet.{u4} P) x (SetLike.coe.{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))) T)) w)) U) (x : N), Eq.{succ u5} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => R) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (a : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) a) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u2) (succ u5), succ u2, succ u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q (fun (_x : Q) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Q) => R) _x) (MulHomClass.toFunLike.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u2 u5, u2, u5} (MonoidHom.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u2, u5} Q R (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u4, u2, u6, u5} P _inst_3 T Q _inst_4 A _inst_5 k l U hl R _inst_6 j) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => Q) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} Q (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))) N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4)) (MonoidHom.monoidHomClass.{u3, u2} N Q (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u2} Q (CommMonoid.toMonoid.{u2} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u1, u3, u4, u2} M _inst_1 S N _inst_2 P _inst_3 f g T hy Q _inst_4 k) x)) (FunLike.coe.{max (succ u3) (succ u5), succ u3, succ u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => R) _x) (MulHomClass.toFunLike.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u5} R (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) (MonoidHomClass.toMulHomClass.{max u3 u5, u3, u5} (MonoidHom.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))) N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6)) (MonoidHom.monoidHomClass.{u3, u5} N R (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (Monoid.toMulOneClass.{u5} R (CommMonoid.toMonoid.{u5} R _inst_6))))) (Submonoid.LocalizationMap.map.{u1, u3, u6, u5} M _inst_1 S N _inst_2 A _inst_5 f (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) U (fun (x : Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u6, u6} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => A) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (SetLike.instMembership.{u6, u6} (Submonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) A (Submonoid.instSetLikeSubmonoid.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)))) (FunLike.coe.{max (succ u1) (succ u6), succ u1, succ u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => A) _x) (MulHomClass.toFunLike.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u6} A (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) (MonoidHomClass.toMulHomClass.{max u1 u6, u1, u6} (MonoidHom.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))) M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) (MonoidHom.monoidHomClass.{u1, u6} M A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5))))) (MonoidHom.comp.{u1, u4, u6} M P A (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u6} A (CommMonoid.toMonoid.{u6} A _inst_5)) l g) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) U) => this) (hl (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 u1) (succ u4), succ u1, succ u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u4, u1, u4} (MonoidHom.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u4} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) S)) x)) (hy x)))]) R _inst_6 j) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.map_map Submonoid.LocalizationMap.map_mapₓ'. -/
 /-- If `comm_monoid` homs `g : M →* P, l : P →* A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`. -/
@@ -1825,7 +1825,7 @@ noncomputable def AwayMap.invSelf : N :=
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{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))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M), (Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) -> (IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) g x)) -> (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift Submonoid.LocalizationMap.AwayMap.liftₓ'. -/
 /-- Given `x : M`, a localization map `F : M →* N` away from `x`, and a map of `comm_monoid`s
 `g : M →* P` such that `g x` is invertible, the homomorphism induced from `N` to `P` sending
@@ -1842,7 +1842,7 @@ noncomputable def AwayMap.lift (hg : IsUnit (g x)) : N →* P :=
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) (hg : IsUnit.{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))) g x)) (a : M), Eq.{succ u3} P (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) N _inst_2 F) a)) (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))) g a)
 but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)) (a : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g a)
+  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)) (a : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u3} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F) a)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g a)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift_eq Submonoid.LocalizationMap.AwayMap.lift_eqₓ'. -/
 @[simp]
 theorem AwayMap.lift_eq (hg : IsUnit (g x)) (a : M) : F.lift x hg (F.toMap a) = g a :=
@@ -1853,7 +1853,7 @@ theorem AwayMap.lift_eq (hg : IsUnit (g x)) (a : M) : F.lift x hg (F.toMap a) =
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : 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))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u1, u2} M _inst_1 x N _inst_2) (hg : IsUnit.{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))) g x)), Eq.{max (succ u3) (succ u1)} (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.comp.{u1, u2, u3} M N P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u1, u2, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 (Submonoid.powers.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1) x) N _inst_2 F)) g
 but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.comp.{u2, u1, u3} M N P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F)) g
+  forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] {g : MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} (x : M) (F : Submonoid.LocalizationMap.AwayMap.{u2, u1} M _inst_1 x N _inst_2) (hg : IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (CommMonoid.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) _inst_3) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))) g x)), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.comp.{u2, u1, u3} M N P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Submonoid.LocalizationMap.AwayMap.lift.{u2, u1, u3} M _inst_1 N _inst_2 P _inst_3 g x F hg) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 (Submonoid.powers.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1) x) N _inst_2 F)) g
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.away_map.lift_comp Submonoid.LocalizationMap.AwayMap.lift_compₓ'. -/
 @[simp]
 theorem AwayMap.lift_comp (hg : IsUnit (g x)) : (F.lift x hg).comp F.toMap = g :=
@@ -1986,7 +1986,7 @@ noncomputable def mulEquivOfLocalizations (k : LocalizationMap S P) : N ≃* 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u3} P (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k) x) (coeFn.{max (succ u3) (succ u2), max (succ u2) (succ u3)} (MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => N -> P) (MonoidHom.hasCoeToFun.{u2, u3} N P (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.lift.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S P _inst_3 k)) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : N}, Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : N) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} N P (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.lift.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) (Submonoid.LocalizationMap.map_units.{u2, u3} M _inst_1 S P _inst_3 k)) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
@@ -1999,7 +1999,7 @@ theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u3, u2} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u1 u2, u2, u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (MulEquiv.symm.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : P}, Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u2, succ u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u1 u2, u2, u1} (MulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (MulEquiv.symm.{u1, u2} N P (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u3, u2, u1} M _inst_1 S P _inst_3 N _inst_2 k (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u3} M _inst_1 S N _inst_2 f)) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_symm_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfLocalizations_symm_apply {k : LocalizationMap S P} {x} :
@@ -2045,7 +2045,7 @@ def ofMulEquivOfLocalizations (k : N ≃* P) : LocalizationMap S 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : M), Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => N -> P) (MulEquiv.hasCoeToFun.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) k (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.ofMulEquivOfLocalizations_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
@@ -2071,7 +2071,7 @@ theorem ofMulEquivOfLocalizations_eq {k : N ≃* 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (x : M), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_applyₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
@@ -2084,7 +2084,7 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
 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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} N (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) k (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) a) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) k (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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) {k : MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) a) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) k (FunLike.coe.{max (succ u1) (succ u3), 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))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, 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))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, 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))) 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))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.symm.{u3, u2} P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) k))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply'ₓ'. -/
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
@@ -2097,7 +2097,7 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
 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) {k : MulEquiv.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} {x : M} {y : P}, Iff (Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => P -> N) (MulEquiv.hasCoeToFun.{u3, u2} P N (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (MulEquiv.symm.{u2, u3} N P (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) k) y))
 but is expected to have type
-  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} {x : M} {y : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) y))
+  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.{u3}} [_inst_2 : CommMonoid.{u3} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S N _inst_2) {k : MulEquiv.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} {x : M} {y : (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u1, u2} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u3, u2} M _inst_1 S N _inst_2 P _inst_3 f k)) x) y) (Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u3} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => N) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (MulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2)))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))))))) (MulEquiv.symm.{u3, u2} N P (MulOneClass.toMul.{u3} N (Monoid.toMulOneClass.{u3} N (CommMonoid.toMonoid.{u3} N _inst_2))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) y))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eqₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
@@ -2123,7 +2123,7 @@ theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S 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) {k : Submonoid.LocalizationMap.{u1, u3} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u3} P (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (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))) (Submonoid.LocalizationMap.toMap.{u1, u3} M _inst_1 S P _inst_3 k) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {k : Submonoid.LocalizationMap.{u3, u2} M _inst_1 S P _inst_3} {x : M}, Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f (Submonoid.LocalizationMap.mulEquivOfLocalizations.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f k))) x) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u3 u2, u3, u2} (MonoidHom.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (MonoidHom.monoidHomClass.{u3, u2} M P (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))) (Submonoid.LocalizationMap.toMap.{u3, u2} M _inst_1 S P _inst_3 k) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_applyₓ'. -/
 @[simp, to_additive add_equiv_of_localizations_right_inv_apply]
 theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
@@ -2226,7 +2226,7 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
 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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) (x : P), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) (fun (_x : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) => P -> M) (MulEquiv.hasCoeToFun.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : P), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => M) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : P), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) x) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (FunLike.coe.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P (fun (_x : P) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : P) => M) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u3, succ u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulEquivClass.toEquivLike.{max u2 u3, u3, u2} (MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))))) k x))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_apply Submonoid.LocalizationMap.ofMulEquivOfDom_applyₓ'. -/
 @[simp, to_additive]
 theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -2252,7 +2252,7 @@ theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.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] {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))} {k : MulEquiv.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))} (H : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) k) T) S) (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (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)))) (MulEquiv.symm.{u3, u1} P M (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) k) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => N) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {k : MulEquiv.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))} (H : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u3, u2, max u2 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u2} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) k) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u1) (succ u3), succ u3, succ u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u3, u3, u1} (MonoidHom.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u3} M _inst_1 S N _inst_2 P _inst_3 f T k H)) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u3), succ u2, succ u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u3, u2, u3} (MulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u3} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))))))) (MulEquiv.symm.{u3, u2} P M (MulOneClass.toMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) k) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp_symm Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symmₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -2265,7 +2265,7 @@ theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.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] {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))} {k : 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 u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u3, u1, max u1 u3} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u3, u1} P M (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.symm.{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))) k)) T) S) (x : M), Eq.{succ u2} N (coeFn.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => P -> N) (MonoidHom.hasCoeToFun.{u3, u2} P N (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u3, u2} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u3} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{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))) k) H)) (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)))) k x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.map.{u2, u3, max u3 u2} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k)) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => N) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) H)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x)
+  forall {M : Type.{u3}} [_inst_1 : CommMonoid.{u3} M] {S : Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u2}} [_inst_3 : CommMonoid.{u2} P] (f : Submonoid.LocalizationMap.{u3, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))} {k : MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (Submonoid.map.{u2, u3, max u3 u2} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u3} P M (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k)) T) S) (x : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u2, u1} (MonoidHom.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} P N (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} P _inst_3 T N _inst_2 (Submonoid.LocalizationMap.ofMulEquivOfDom.{u3, u1, u2} M _inst_1 S N _inst_2 P _inst_3 f T (MulEquiv.symm.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) k) H)) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (MulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3)))) M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u3, u2} M P (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u2} P (Monoid.toMulOneClass.{u2} P (CommMonoid.toMonoid.{u2} P _inst_3))))))) k x)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u3} M (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u3 u1, u3, u1} (MonoidHom.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u3, u1} M N (Monoid.toMulOneClass.{u3} M (CommMonoid.toMonoid.{u3} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u3, u1} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_comp Submonoid.LocalizationMap.ofMulEquivOfDom_compₓ'. -/
 @[to_additive]
 theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) (x) :
@@ -2278,7 +2278,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.14384.14392 : 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.14405 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14405 (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.2398 : 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.14405) 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.2398 : 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.14405) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14409 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14410 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14405) (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.2398 : 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.14405) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14409) => 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.14409 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.2398 : 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.2398 : 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.2398 : 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.14384.14392 : 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.14405 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14405 (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.2372 : 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.14405) 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.2372 : 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.14405) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14409 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14410 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14405) (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.2372 : 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.14405) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14409) => 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.14409 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.2372 : 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.2372 : 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.2372 : 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."]
@@ -2312,7 +2312,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.2398 : 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.2398 : 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.2398 : 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.14589 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14590 : 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.14589) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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.2398 : 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.14589) (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.2372 : 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.2372 : 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.2372 : 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.14589 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14590 : 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.14589) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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.2372 : 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.14589) (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}
@@ -2327,7 +2327,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.2398 : 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.2398 : 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.14683 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14684 : 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.14683) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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.2398 : 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.14683) (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.2372 : 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.2372 : 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.14683 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14684 : 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.14683) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : 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.2372 : 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.14683) (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}
@@ -2342,7 +2342,7 @@ theorem mulEquivOfMulEquiv_eq_map {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 : M), 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) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{max (succ u4) (succ u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{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))
 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), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
+  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), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) 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) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq Submonoid.LocalizationMap.mulEquivOfMulEquiv_eqₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T)
@@ -2369,7 +2369,7 @@ theorem mulEquivOfMulEquiv_mk' {k : LocalizationMap T Q} {j : M ≃* P} (H : S.m
 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), Eq.{succ u4} Q (coeFn.{max (succ u4) (succ u1), max (succ u1) (succ u4)} (MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => M -> Q) (MonoidHom.hasCoeToFun.{u1, u4} M Q (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{u1, u4} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u1, u2, u4} M _inst_1 S N _inst_2 Q _inst_4 f (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 u3), max (succ u3) (succ u4)} (MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => P -> Q) (MonoidHom.hasCoeToFun.{u3, u4} P Q (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.toMap.{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))
 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), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => Q) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u3} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u2, u1, u3} M _inst_1 S N _inst_2 Q _inst_4 f (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 u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
+  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), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Q) x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Q) _x) (MulHomClass.toFunLike.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u2 u3, u2, u3} (MonoidHom.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u2, u3} M Q (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{u2, u3} M _inst_1 S Q _inst_4 (Submonoid.LocalizationMap.ofMulEquivOfLocalizations.{u2, u1, u3} M _inst_1 S N _inst_2 Q _inst_4 f (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 u4) (succ u3), succ u4, succ u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P (fun (_x : P) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : P) => Q) _x) (MulHomClass.toFunLike.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u4 u3, u4, u3} (MonoidHom.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u4, u3} P Q (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.toMap.{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))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_applyₓ'. -/
 @[simp, to_additive]
 theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
@@ -2434,7 +2434,7 @@ variable {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))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{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) 1 (OfNat.mk.{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) 1 (One.one.{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) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S))))) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
+  forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (Localization.mk.{u1} M _inst_1 S x (OfNat.ofNat.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) 1 (One.toOfNat1.{u1} (Subtype.{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.instMembership.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S)) (Submonoid.one.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) S)))) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mk_one_eq_monoid_of_mk Localization.mk_one_eq_monoidOf_mkₓ'. -/
 @[to_additive]
 theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x :=
@@ -2522,7 +2522,7 @@ variable {f}
 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} (x : Localization.{u1} M _inst_1 S), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) x) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => (Localization.{u1} M _inst_1 S) -> N) (MonoidHom.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.lift.{u1, u1, u2} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u1} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : Localization.{u2} M _inst_1 S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : Localization.{u2} M _inst_1 S) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u2, u2, u1} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u2} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : Localization.{u2} M _inst_1 S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u2} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)))) (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) (fun (_x : Localization.{u2} M _inst_1 S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : Localization.{u2} M _inst_1 S) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} (Localization.{u2} M _inst_1 S) N (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.lift.{u2, u2, u1} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) N _inst_2 (Localization.monoidOf.{u2} M _inst_1 S) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) (Submonoid.LocalizationMap.map_units.{u1, u2} M _inst_1 S N _inst_2 f)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_apply Localization.mulEquivOfQuotient_applyₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lift f.map_units x :=
@@ -2558,7 +2558,7 @@ theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y
 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} (x : M), Eq.{succ u2} N (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (fun (_x : MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) => (Localization.{u1} M _inst_1 S) -> N) (MulEquiv.hasCoeToFun.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 but is expected to have type
-  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} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => Localization.{u1} M _inst_1 S) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) (fun (_x : Localization.{u1} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
+  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} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Localization.{u1} M _inst_1 S) a) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) (fun (_x : Localization.{u1} M _inst_1 S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : Localization.{u1} M _inst_1 S) => N) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (MulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)))) (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.instMulLocalization.{u1} M _inst_1 S) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f) (FunLike.coe.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Localization.{u1} M _inst_1 S) _x) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u1} (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))) M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))) (MonoidHom.monoidHomClass.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (MulOneClass.toMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u1 u2, u1, u2} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (MonoidHom.monoidHomClass.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
@@ -2595,7 +2595,7 @@ theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x
 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} (x : M), Eq.{succ u1} (Localization.{u1} M _inst_1 S) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (fun (_x : MulEquiv.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) => N -> (Localization.{u1} M _inst_1 S)) (MulEquiv.hasCoeToFun.{u2, u1} N (Localization.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.hasMul.{u1} M _inst_1 S)) (MulEquiv.symm.{u1, u2} (Localization.{u1} M _inst_1 S) N (Localization.hasMul.{u1} M _inst_1 S) (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Localization.mulEquivOfQuotient.{u1, u2} M _inst_1 S N _inst_2 f)) (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (Submonoid.LocalizationMap.toMap.{u1, u2} M _inst_1 S N _inst_2 f) x)) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (fun (_x : MonoidHom.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) => M -> (Localization.{u1} M _inst_1 S)) (MonoidHom.hasCoeToFun.{u1, u1} M (Localization.{u1} M _inst_1 S) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S)))) (Submonoid.LocalizationMap.toMap.{u1, u1} M _inst_1 S (Localization.{u1} M _inst_1 S) (Localization.commMonoid.{u1} M _inst_1 S) (Localization.monoidOf.{u1} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) 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] {f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2} (x : M), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Localization.{u2} M _inst_1 S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (MulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S)) N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S) (MulEquiv.instMulEquivClassMulEquiv.{u1, u2} N (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.instMulLocalization.{u2} M _inst_1 S))))) (MulEquiv.symm.{u2, u1} (Localization.{u2} M _inst_1 S) N (Localization.instMulLocalization.{u2} M _inst_1 S) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (Localization.mulEquivOfQuotient.{u2, u1} M _inst_1 S N _inst_2 f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M _inst_1 S N _inst_2 f) x)) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => Localization.{u2} M _inst_1 S) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))) M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S))) (MonoidHom.monoidHomClass.{u2, u2} M (Localization.{u2} M _inst_1 S) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} (Localization.{u2} M _inst_1 S) (CommMonoid.toMonoid.{u2} (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S)))))) (Submonoid.LocalizationMap.toMap.{u2, u2} M _inst_1 S (Localization.{u2} M _inst_1 S) (Localization.instCommMonoidLocalization.{u2} M _inst_1 S) (Localization.monoidOf.{u2} M _inst_1 S)) x)
 Case conversion may be inaccurate. Consider using '#align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOfₓ'. -/
 @[simp, to_additive]
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
@@ -2771,7 +2771,7 @@ namespace Submonoid
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {f : Submonoid.LocalizationMap.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)}, Eq.{succ u2} N (coeFn.{max (succ u2) (succ u1), max (succ u1) (succ u2)} (MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) (fun (_x : MonoidHom.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) => M -> N) (MonoidHom.hasCoeToFun.{u1, u2} M N (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))) (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2)))) (Submonoid.LocalizationMap.toMap.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2) f) (Prod.fst.{u1, u1} M (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1))))) S) (Submonoid.LocalizationMap.sec.{u1, u2} M (CommMonoidWithZero.toCommMonoid.{u1} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u2} N _inst_2) f (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (MulZeroClass.toHasZero.{u2} N (MulZeroOneClass.toMulZeroClass.{u2} N (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)))))))))) (OfNat.ofNat.{u2} N 0 (OfNat.mk.{u2} N 0 (Zero.zero.{u2} N (MulZeroClass.toHasZero.{u2} N (MulZeroOneClass.toMulZeroClass.{u2} N (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)))))))
 but is expected to have type
-  forall {M : Type.{u2}} [_inst_1 : CommMonoidWithZero.{u2} M] {S : Submonoid.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M (MonoidWithZero.toMulZeroOneClass.{u2} M (CommMonoidWithZero.toMonoidWithZero.{u2} M _inst_1)))} {N : Type.{u1}} [_inst_2 : CommMonoidWithZero.{u1} N] {f : Submonoid.LocalizationMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2))) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) _inst_2)))
+  forall {M : Type.{u2}} [_inst_1 : CommMonoidWithZero.{u2} M] {S : Submonoid.{u2} M (MulZeroOneClass.toMulOneClass.{u2} M (MonoidWithZero.toMulZeroOneClass.{u2} M (CommMonoidWithZero.toMonoidWithZero.{u2} M _inst_1)))} {N : Type.{u1}} [_inst_2 : CommMonoidWithZero.{u1} N] {f : Submonoid.LocalizationMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)}, Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) (MonoidHomClass.toMulHomClass.{max u2 u1, u2, u1} (MonoidHom.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))) M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2))) (MonoidHom.monoidHomClass.{u2, u1} M N (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))) (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2)))))) (Submonoid.LocalizationMap.toMap.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) (CommMonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => N) (Prod.fst.{u2, u2} M (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1))))) x S)) (Submonoid.LocalizationMap.sec.{u2, u1} M (CommMonoidWithZero.toCommMonoid.{u2} M _inst_1) S N (CommMonoidWithZero.toCommMonoid.{u1} N _inst_2) f (OfNat.ofNat.{u1} N 0 (Zero.toOfNat0.{u1} N (CommMonoidWithZero.toZero.{u1} N _inst_2)))))) _inst_2)))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.sec_zero_fst Submonoid.LocalizationMap.sec_zero_fstₓ'. -/
 @[simp]
 theorem LocalizationMap.sec_zero_fst {f : LocalizationMap S N} : f.toMap (f.sec 0).fst = 0 := by
@@ -2784,7 +2784,7 @@ namespace LocalizationWithZeroMap
 lean 3 declaration is
   forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S), IsUnit.{u3} P (MonoidWithZero.toMonoid.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (fun (_x : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) => M -> P) (MonoidWithZeroHom.hasCoeToFun.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) g ((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 (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.setLike.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S))))) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
 but is expected to have type
-  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (MonoidWithZero.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (CommMonoidWithZero.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) _inst_3)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulOneClass.toMul.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (MulOneClass.toMul.{u3} P (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))) (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (MonoidWithZeroHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (MonoidWithZeroHom.monoidWithZeroHomClass.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
+  forall {M : Type.{u1}} [_inst_1 : CommMonoidWithZero.{u1} M] {S : Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))} {N : Type.{u2}} [_inst_2 : CommMonoidWithZero.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoidWithZero.{u3} P], (Submonoid.LocalizationWithZeroMap.{u1, u2} M _inst_1 S N _inst_2) -> (forall (g : MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))), (forall (y : Subtype.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (SetLike.instMembership.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))))) x S)), IsUnit.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (MonoidWithZero.toMonoid.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) (CommMonoidWithZero.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y)) _inst_3)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : M) => P) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulOneClass.toMul.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) (MulOneClass.toMul.{u3} P (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1))) (MulZeroOneClass.toMulOneClass.{u3} P (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) (MonoidWithZeroHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (MonoidWithZeroHom.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))) M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)) (MonoidWithZeroHom.monoidWithZeroHomClass.{u1, u3} M P (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3)))))) g (Subtype.val.{succ u1} M (fun (x : M) => Membership.mem.{u1, u1} M (Set.{u1} M) (Set.instMembershipSet.{u1} M) x (SetLike.coe.{u1, u1} (Submonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) M (Submonoid.instSetLikeSubmonoid.{u1} M (MulZeroOneClass.toMulOneClass.{u1} M (MonoidWithZero.toMulZeroOneClass.{u1} M (CommMonoidWithZero.toMonoidWithZero.{u1} M _inst_1)))) S)) y))) -> (MonoidWithZeroHom.{u2, u3} N P (MonoidWithZero.toMulZeroOneClass.{u2} N (CommMonoidWithZero.toMonoidWithZero.{u2} N _inst_2)) (MonoidWithZero.toMulZeroOneClass.{u3} P (CommMonoidWithZero.toMonoidWithZero.{u3} P _inst_3))))
 Case conversion may be inaccurate. Consider using '#align submonoid.localization_with_zero_map.lift Submonoid.LocalizationWithZeroMap.liftₓ'. -/
 /-- Given a localization map `f : M →*₀ N` for a submonoid `S ⊆ M` and a map of
 `comm_monoid_with_zero`s `g : M →*₀ P` such that `g y` is invertible for all `y : S`, the
Diff
@@ -2278,7 +2278,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.14385.14393 : 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.14406 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14406 (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.2398 : 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.14406) 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.2398 : 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.14406) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14410 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14411 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14406) (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.2398 : 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.14406) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14410) => 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.14410 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.2398 : 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.2398 : 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.2398 : 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.14384.14392 : 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.14405 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14405 (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.2398 : 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.14405) 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.2398 : 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.14405) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14409 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14410 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14405) (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.2398 : 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.14405) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14409) => 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.14409 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.2398 : 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.2398 : 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.2398 : 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."]
@@ -2312,7 +2312,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.2398 : 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.2398 : 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.2398 : 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.14590 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14591 : 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.14590) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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.2398 : 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.14590) (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.2398 : 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.2398 : 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.2398 : 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.14589 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14590 : 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.14589) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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.2398 : 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.14589) (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}
@@ -2327,7 +2327,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.2398 : 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.2398 : 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.14684 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14685 : 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.14684) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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.2398 : 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.14684) (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.2398 : 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.2398 : 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.14683 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14684 : 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.14683) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : 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.2398 : 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.14683) (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}
@@ -2355,7 +2355,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.14857 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14858 : 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.14857) => 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.14857) (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.14856 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.14857 : 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.14856) => 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.14856) (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
@@ -614,13 +614,13 @@ instance [SMul R₁ M] [SMul R₂ M] [IsScalarTower R₁ M M] [IsScalarTower R
     where smul_assoc s t :=
     Localization.ind <| Prod.rec fun r x => by simp only [smul_mk, smul_assoc s t r]
 
-/- warning: localization.smul_comm_class_right -> Localization.sMulCommClass_right is a dubious translation:
+/- warning: localization.smul_comm_class_right -> Localization.smulCommClass_right is a dubious translation:
 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))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (Mul.toSMul.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) _inst_4], SMulCommClass.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.hasSmul.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (Mul.toSMul.{u1} (Localization.{u1} M _inst_1 S) (Localization.hasMul.{u1} M _inst_1 S))
 but is expected to have type
   forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {R : Type.{u2}} [_inst_4 : SMul.{u2, u1} R M] [_inst_5 : IsScalarTower.{u2, u1, u1} R M M _inst_4 (MulAction.toSMul.{u1, u1} M M (CommMonoid.toMonoid.{u1} M _inst_1) (Monoid.toMulAction.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) _inst_4], SMulCommClass.{u2, u1, u1} R (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (Localization.instSMulLocalization.{u1, u2} M _inst_1 S R _inst_4 _inst_5) (MulAction.toSMul.{u1, u1} (Localization.{u1} M _inst_1 S) (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S)) (Monoid.toMulAction.{u1} (Localization.{u1} M _inst_1 S) (CommMonoid.toMonoid.{u1} (Localization.{u1} M _inst_1 S) (Localization.instCommMonoidLocalization.{u1} M _inst_1 S))))
-Case conversion may be inaccurate. Consider using '#align localization.smul_comm_class_right Localization.sMulCommClass_rightₓ'. -/
-instance sMulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
+Case conversion may be inaccurate. Consider using '#align localization.smul_comm_class_right Localization.smulCommClass_rightₓ'. -/
+instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
     SMulCommClass R (Localization S) (Localization S)
     where smul_comm s :=
     Localization.ind <|
@@ -628,7 +628,7 @@ instance sMulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
         Localization.ind <|
           Prod.rec fun r₂ x₂ => by
             simp only [smul_mk, smul_eq_mul, mk_mul, mul_comm r₁, smul_mul_assoc]
-#align localization.smul_comm_class_right Localization.sMulCommClass_right
+#align localization.smul_comm_class_right Localization.smulCommClass_right
 
 /- warning: localization.is_scalar_tower_right -> Localization.isScalarTower_right is a dubious translation:
 lean 3 declaration is

Changes in mathlib4

mathlib3
mathlib4
chore: adapt to multiple goal linter 1 (#12338)

A PR accompanying #12339.

Zulip discussion

Diff
@@ -961,7 +961,7 @@ noncomputable def lift : N →* P where
     dsimp only
     rw [mul_inv_left hg, ← mul_assoc, ← mul_assoc, mul_inv_right hg, mul_comm _ (g (f.sec y).1), ←
       mul_assoc, ← mul_assoc, mul_inv_right hg]
-    repeat' rw [← g.map_mul]
+    repeat rw [← g.map_mul]
     exact f.eq_of_eq hg (by simp_rw [f.toMap.map_mul, sec_spec']; ac_rfl)
 #align submonoid.localization_map.lift Submonoid.LocalizationMap.lift
 #align add_submonoid.localization_map.lift AddSubmonoid.LocalizationMap.lift
@@ -2099,9 +2099,10 @@ instance partialOrder : PartialOrder (Localization s) where
       rwa [mul_left_comm, mul_left_comm (b.2 : α), mul_le_mul_iff_left]
   le_antisymm a b := by
     induction' a using Localization.rec with a₁ a₂
-    induction' b using Localization.rec with b₁ b₂
-    simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists]
-    exact fun hab hba => ⟨1, by rw [hab.antisymm hba]⟩
+    on_goal 1 =>
+      induction' b using Localization.rec with b₁ b₂
+      · simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists]
+        exact fun hab hba => ⟨1, by rw [hab.antisymm hba]⟩
     all_goals rfl
   lt_iff_le_not_le a b := Localization.induction_on₂ a b fun a b => lt_iff_le_not_le
 
chore: remove unnecessary cdots (#12417)

These · are scoping when there is a single active goal.

These were found using a modification of the linter at #12339.

Diff
@@ -1192,9 +1192,9 @@ theorem map_comp : (f.map hy k).comp f.toMap = k.toMap.comp g :=
 @[to_additive]
 theorem map_mk' (x) (y : S) : f.map hy k (f.mk' x y) = k.mk' (g x) ⟨g y, hy y⟩ := by
   rw [map, lift_mk', mul_inv_left]
-  · show k.toMap (g x) = k.toMap (g y) * _
-    rw [mul_mk'_eq_mk'_of_mul]
-    exact (k.mk'_mul_cancel_left (g x) ⟨g y, hy y⟩).symm
+  show k.toMap (g x) = k.toMap (g y) * _
+  rw [mul_mk'_eq_mk'_of_mul]
+  exact (k.mk'_mul_cancel_left (g x) ⟨g y, hy y⟩).symm
 #align submonoid.localization_map.map_mk' Submonoid.LocalizationMap.map_mk'
 #align add_submonoid.localization_map.map_mk' AddSubmonoid.LocalizationMap.map_mk'
 
chore: classify porting notes referring to missing linters (#12098)

Reference the newly created issues #12094 and #12096, as well as the pre-existing #5171. Change all references to #10927 to #5171. Some of these changes were not labelled as "porting note"; change this for good measure.

Diff
@@ -85,7 +85,7 @@ variable {M : Type*} [AddCommMonoid M] (S : AddSubmonoid M) (N : Type*) [AddComm
 
 /-- The type of AddMonoid homomorphisms satisfying the characteristic predicate: if `f : M →+ N`
 satisfies this predicate, then `N` is isomorphic to the localization of `M` at `S`. -/
--- Porting note: This linter does not exist yet
+-- Porting note(#5171): this linter isn't ported yet.
 -- @[nolint has_nonempty_instance]
 structure LocalizationMap extends AddMonoidHom M N where
   map_add_units' : ∀ y : S, IsAddUnit (toFun y)
@@ -111,7 +111,7 @@ namespace Submonoid
 
 /-- The type of monoid homomorphisms satisfying the characteristic predicate: if `f : M →* N`
 satisfies this predicate, then `N` is isomorphic to the localization of `M` at `S`. -/
--- Porting note: This linter does not exist yet
+-- Porting note(#5171): this linter isn't ported yet.
 -- @[nolint has_nonempty_instance]
 structure LocalizationMap extends MonoidHom M N where
   map_units' : ∀ y : S, IsUnit (toFun y)
@@ -1876,7 +1876,7 @@ theorem LocalizationMap.subsingleton  (f : Submonoid.LocalizationMap S N) (h : 0
 /-- The type of homomorphisms between monoids with zero satisfying the characteristic predicate:
 if `f : M →*₀ N` satisfies this predicate, then `N` is isomorphic to the localization of `M` at
 `S`. -/
--- Porting note: This linter does not exist yet
+-- Porting note(#5171): this linter isn't ported yet.
 -- @[nolint has_nonempty_instance]
 structure LocalizationWithZeroMap extends LocalizationMap S N where
   map_zero' : toFun 0 = 0
doc: fix many more mathlib3 names in doc comments (#11987)

A mix of various changes; generated with a script and manually tweaked.

Diff
@@ -145,7 +145,7 @@ quotient is the localization of `M` at `S`, defined as the unique congruence rel
 `(1, 1) ∼ (y, y)` under `s`, we have that `(x₁, y₁) ∼ (x₂, y₂)` by `r` implies
 `(x₁, y₁) ∼ (x₂, y₂)` by `s`. -/
 @[to_additive AddLocalization.r
-    "The congruence relation on `M × S`, `M` an `AddCommMonoid` and `S` an `add_submonoid` of `M`,
+    "The congruence relation on `M × S`, `M` an `AddCommMonoid` and `S` an `AddSubmonoid` of `M`,
 whose quotient is the localization of `M` at `S`, defined as the unique congruence relation on
 `M × S` such that for any other congruence relation `s` on `M × S` where for all `y ∈ S`,
 `(0, 0) ∼ (y, y)` under `s`, we have that `(x₁, y₁) ∼ (x₂, y₂)` by `r` implies
feat: blacklist compiler definitions in shake (#11981)

As reported on Zulip.

Co-authored-by: Mario Carneiro <di.gama@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>

Diff
@@ -3,11 +3,11 @@ Copyright (c) 2019 Amelia Livingston. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Amelia Livingston
 -/
-import Mathlib.Init.Data.Prod
 import Mathlib.GroupTheory.Congruence
 import Mathlib.GroupTheory.Submonoid.Membership
 import Mathlib.Algebra.Group.Units
 import Mathlib.Algebra.Regular.Basic
+import Mathlib.Init.Data.Prod
 
 #align_import group_theory.monoid_localization from "leanprover-community/mathlib"@"10ee941346c27bdb5e87bb3535100c0b1f08ac41"
 
change the order of operation in zsmulRec and nsmulRec (#11451)

We change the following field in the definition of an additive commutative monoid:

 nsmul_succ : ∀ (n : ℕ) (x : G),
-  AddMonoid.nsmul (n + 1) x = x + AddMonoid.nsmul n x
+  AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x

where the latter is more natural

We adjust the definitions of ^ in monoids, groups, etc. Originally there was a warning comment about why this natural order was preferred

use x * npowRec n x and not npowRec n x * x in the definition to make sure that definitional unfolding of npowRec is blocked, to avoid deep recursion issues.

but it seems to no longer apply.

Remarks on the PR :

  • pow_succ and pow_succ' have switched their meanings.
  • Most of the time, the proofs were adjusted by priming/unpriming one lemma, or exchanging left and right; a few proofs were more complicated to adjust.
  • In particular, [Mathlib/NumberTheory/RamificationInertia.lean] used Ideal.IsPrime.mul_mem_pow which is defined in [Mathlib/RingTheory/DedekindDomain/Ideal.lean]. Changing the order of operation forced me to add the symmetric lemma Ideal.IsPrime.mem_pow_mul.
  • the docstring for Cauchy condensation test in [Mathlib/Analysis/PSeries.lean] was mathematically incorrect, I added the mention that the function is antitone.
Diff
@@ -276,7 +276,7 @@ instance commMonoid : CommMonoid (Localization S) where
   npow := Localization.npow S
   npow_zero x := show Localization.npow S 0 x = .one S by
     rw [Localization.npow, Localization.one]; apply (r S).commMonoid.npow_zero
-  npow_succ n x := show .npow S n.succ x = x.mul S (.npow S n x) by
+  npow_succ n x := show Localization.npow S n.succ x = (Localization.npow S n x).mul S x by
     rw [Localization.npow, Localization.mul]; apply (r S).commMonoid.npow_succ
 
 variable {S}
style: add missing spaces between a tactic name and its arguments (#11714)

After the (d)simp and rw tactics - hints to find further occurrences welcome.

zulip discussion

Co-authored-by: @sven-manthe

Diff
@@ -1979,8 +1979,8 @@ theorem leftCancelMulZero_of_le_isLeftRegular
     exact ha hb
   have main : g (b.1 * (x.2 * y.1)) = g (b.1 * (y.2 * x.1)) :=
     calc
-      g (b.1 * (x.2 * y.1)) = g b.1 * (g x.2 * g y.1) := by rw[map_mul g,map_mul g]
-      _ = a * g b.2 * (g x.2 * (w * g y.2)) := by rw[hb, hy]
+      g (b.1 * (x.2 * y.1)) = g b.1 * (g x.2 * g y.1) := by rw [map_mul g,map_mul g]
+      _ = a * g b.2 * (g x.2 * (w * g y.2)) := by rw [hb, hy]
       _ = a * w * g b.2 * (g x.2 * g y.2) := by
         rw [← mul_assoc, ← mul_assoc _ w, mul_comm _ w, mul_assoc w, mul_assoc,
           ← mul_assoc w, ← mul_assoc w, mul_comm w]
chore: remove tactics (#11365)

More tactics that are not used, found using the linter at #11308.

The PR consists of tactic removals, whitespace changes and replacing a porting note by an explanation.

Diff
@@ -2102,7 +2102,7 @@ instance partialOrder : PartialOrder (Localization s) where
     induction' b using Localization.rec with b₁ b₂
     simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists]
     exact fun hab hba => ⟨1, by rw [hab.antisymm hba]⟩
-    all_goals intros; rfl
+    all_goals rfl
   lt_iff_le_not_le a b := Localization.induction_on₂ a b fun a b => lt_iff_le_not_le
 
 @[to_additive]
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -2154,7 +2154,7 @@ instance [LinearOrderedCancelCommMonoid α] {s : Submonoid α} :
         simp_rw [mk_le_mk]
         exact le_total _ _
     decidableLE := Localization.decidableLE
-    decidableLT := Localization.decidableLT  -- porting note: was wrong in mathlib3
+    decidableLT := Localization.decidableLT  -- Porting note: was wrong in mathlib3
     decidableEq := Localization.decidableEq }
 
 end Localization
chore: classify dsimp cannot prove this porting notes (#10676)

Classifies by adding issue number (#10675) to porting notes claiming dsimp cannot prove this.

Diff
@@ -1757,7 +1757,7 @@ noncomputable def mulEquivOfQuotient (f : Submonoid.LocalizationMap S N) : Local
 
 variable {f}
 
--- Porting note: dsimp can not prove this
+-- Porting note (#10675): dsimp can not prove this
 @[to_additive (attr := simp, nolint simpNF)]
 theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lift f.map_units x :=
   rfl
chore: classify simp can do this porting notes (#10619)

Classify by adding issue number (#10618) to porting notes claiming anything semantically equivalent to simp can prove this or simp can simplify this.

Diff
@@ -1501,7 +1501,7 @@ theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S P) :
 #align submonoid.localization_map.mul_equiv_of_localizations_right_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv
 #align add_submonoid.localization_map.add_equiv_of_localizations_right_inv AddSubmonoid.LocalizationMap.addEquivOfLocalizations_right_inv
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 @[to_additive addEquivOfLocalizations_right_inv_apply]
 theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
     (f.ofMulEquivOfLocalizations (f.mulEquivOfLocalizations k)).toMap x = k.toMap x := by simp
@@ -1515,7 +1515,7 @@ theorem mulEquivOfLocalizations_left_inv (k : N ≃* P) :
 #align submonoid.localization_map.mul_equiv_of_localizations_left_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv
 #align add_submonoid.localization_map.add_equiv_of_localizations_left_neg AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 @[to_additive]
 theorem mulEquivOfLocalizations_left_inv_apply {k : N ≃* P} (x) :
     f.mulEquivOfLocalizations (f.ofMulEquivOfLocalizations k) x = k x := by simp
@@ -1776,7 +1776,7 @@ theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y
 #align localization.mul_equiv_of_quotient_mk Localization.mulEquivOfQuotient_mk
 #align add_localization.add_equiv_of_quotient_mk AddLocalization.addEquivOfQuotient_mk
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove this
 @[to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
   by simp
@@ -1835,7 +1835,7 @@ def Away.monoidOf : Submonoid.LocalizationMap.AwayMap x (Away x) :=
 #align localization.away.monoid_of Localization.Away.monoidOf
 #align add_localization.away.add_monoid_of AddLocalization.Away.addMonoidOf
 
--- @[simp] -- Porting note: simp can prove this
+-- @[simp] -- Porting note (#10618): simp can prove thisrove this
 @[to_additive]
 theorem Away.mk_eq_monoidOf_mk' : mk = (Away.monoidOf x).mk' := by simp
 #align localization.away.mk_eq_monoid_of_mk' Localization.Away.mk_eq_monoidOf_mk'
chore: remove stream-of-consciousness uses of have, replace and suffices (#10640)

No changes to tactic file, it's just boring fixes throughout the library.

This follows on from #6964.

Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -1295,8 +1295,8 @@ theorem map_injective_of_injective (hg : Injective g) (k : LocalizationMap (S.ma
   set i := map f (apply_coe_mem_map g S) k
   have ifkg (a : M) : i (f.toMap a) = k.toMap (g a) := map_eq f (apply_coe_mem_map g S) a
   let ⟨z', w', x, hxz, hxw⟩ := surj₂ f z w
-  have : k.toMap (g z') = k.toMap (g w')
-  · rw [← ifkg, ← ifkg, ← hxz, ← hxw, map_mul, map_mul, hizw]
+  have : k.toMap (g z') = k.toMap (g w') := by
+    rw [← ifkg, ← ifkg, ← hxz, ← hxw, map_mul, map_mul, hizw]
   obtain ⟨⟨_, c, hc, rfl⟩, eq⟩ := k.exists_of_eq _ _ this
   simp_rw [← map_mul, hg.eq_iff] at eq
   rw [← (f.map_units x).mul_left_inj, hxz, hxw, f.eq_iff_exists]
feat: A result on composition of lift of MonoidLocalization (#10373)

Added a result on composition of lift of the localization map on Monoids. Modified some cases'.

Co-authored-by: Xavier Xarles <56635243+XavierXarles@users.noreply.github.com>

Diff
@@ -444,10 +444,10 @@ protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Loc
   Localization S :=
     Localization.liftOn z (fun a b ↦ mk (c • a) b)
       (fun {a a' b b'} h ↦ mk_eq_mk_iff.2 (by
-        cases' b with b hb
-        cases' b' with b' hb'
+        let ⟨b, hb⟩ := b
+        let ⟨b', hb'⟩ := b'
         rw [r_eq_r'] at h ⊢
-        cases' h with t ht
+        let ⟨t, ht⟩ := h
         use t
         dsimp only [Subtype.coe_mk] at ht ⊢
 -- TODO: this definition should take `SMulCommClass R M M` instead of `IsScalarTower R M M` if
@@ -701,7 +701,7 @@ variable (f : LocalizationMap S N)
 theorem map_right_cancel {x y} {c : S} (h : f.toMap (c * x) = f.toMap (c * y)) :
     f.toMap x = f.toMap y := by
   rw [f.toMap.map_mul, f.toMap.map_mul] at h
-  cases' f.map_units c with u hu
+  let ⟨u, hu⟩ := f.map_units c
   rw [← hu] at h
   exact (Units.mul_right_inj u).1 h
 #align submonoid.localization_map.map_right_cancel Submonoid.LocalizationMap.map_right_cancel
@@ -1087,27 +1087,37 @@ theorem lift_id (x) : f.lift f.map_units x = x :=
 #align submonoid.localization_map.lift_id Submonoid.LocalizationMap.lift_id
 #align add_submonoid.localization_map.lift_id AddSubmonoid.LocalizationMap.lift_id
 
+/-- Given Localization maps `f : M →* N` for a Submonoid `S ⊆ M` and
+`k : M →* Q` for a Submonoid `T ⊆ M`, such that `S ≤ T`, and we have
+`l : M →* A`, the composition of the induced map `f.lift` for `k` with
+the induced map `k.lift` for `l` is equal to the  induced map `f.lift` for `l`. -/
+@[to_additive
+    "Given Localization maps `f : M →+ N` for a Submonoid `S ⊆ M` and
+`k : M →+ Q` for a Submonoid `T ⊆ M`, such that `S ≤ T`, and we have
+`l : M →+ A`, the composition of the induced map `f.lift` for `k` with
+the induced map `k.lift` for `l` is equal to the  induced map `f.lift` for `l`"]
+theorem lift_comp_lift {T : Submonoid M} (hST : S ≤ T) {Q : Type*} [CommMonoid Q]
+    (k : LocalizationMap T Q) {A : Type*} [CommMonoid A] {l : M →* A}
+    (hl : ∀ w : T, IsUnit (l w)) :
+    (k.lift hl).comp (f.lift (map_units k ⟨_, hST ·.2⟩)) =
+    f.lift (hl ⟨_, hST ·.2⟩) := .symm <|
+  lift_unique _ _ fun x ↦ by rw [← MonoidHom.comp_apply,
+    MonoidHom.comp_assoc, lift_comp, lift_comp]
+
+@[to_additive]
+theorem lift_comp_lift_eq {Q : Type*} [CommMonoid Q] (k : LocalizationMap S Q)
+    {A : Type*} [CommMonoid A] {l : M →* A} (hl : ∀ w : S, IsUnit (l w)) :
+    (k.lift hl).comp (f.lift k.map_units) = f.lift hl :=
+  lift_comp_lift f le_rfl k hl
+
 /-- Given two Localization maps `f : M →* N, k : M →* P` for a Submonoid `S ⊆ M`, the hom
 from `P` to `N` induced by `f` is left inverse to the hom from `N` to `P` induced by `k`. -/
 @[to_additive (attr := simp)
     "Given two Localization maps `f : M →+ N, k : M →+ P` for a Submonoid `S ⊆ M`, the hom
 from `P` to `N` induced by `f` is left inverse to the hom from `N` to `P` induced by `k`."]
 theorem lift_left_inverse {k : LocalizationMap S P} (z : N) :
-    k.lift f.map_units (f.lift k.map_units z) = z := by
-  rw [lift_spec]
-  cases' f.surj z with x hx
-  conv_rhs =>
-    congr
-    next => skip
-    rw [f.eq_mk'_iff_mul_eq.2 hx]
-  rw [mk', ← mul_assoc, mul_inv_right f.map_units, ← f.toMap.map_mul, ← f.toMap.map_mul]
-  apply k.eq_of_eq f.map_units
-  rw [k.toMap.map_mul, k.toMap.map_mul, ← sec_spec, mul_assoc, lift_spec_mul]
-  repeat' rw [← k.toMap.map_mul]
-  apply f.eq_of_eq k.map_units
-  repeat' rw [f.toMap.map_mul]
-  rw [sec_spec', ← hx]
-  ac_rfl
+    k.lift f.map_units (f.lift k.map_units z) = z :=
+  (DFunLike.congr_fun (lift_comp_lift_eq f k f.map_units) z).trans (lift_id f z)
 #align submonoid.localization_map.lift_left_inverse Submonoid.LocalizationMap.lift_left_inverse
 #align add_submonoid.localization_map.lift_left_inverse AddSubmonoid.LocalizationMap.lift_left_inverse
 
chore: remove spurious imports of positivity (#9924)

Some of these are already transitively imported, others aren't used at all (but not handled by noshake in #9772).

Mostly I wanted to avoid needing all of algebra imported (but unused!) in FilteredColimitCommutesFiniteLimit; there are now some assert_not_exists to preserve this.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -7,6 +7,7 @@ import Mathlib.Init.Data.Prod
 import Mathlib.GroupTheory.Congruence
 import Mathlib.GroupTheory.Submonoid.Membership
 import Mathlib.Algebra.Group.Units
+import Mathlib.Algebra.Regular.Basic
 
 #align_import group_theory.monoid_localization from "leanprover-community/mathlib"@"10ee941346c27bdb5e87bb3535100c0b1f08ac41"
 
chore: tidy various files (#9903)
Diff
@@ -2006,16 +2006,12 @@ variable {α : Type*} [CancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α}
 
 @[to_additive]
 theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
-  -- porting note: times out unless we add this `have`. Even `infer_instance` times out here.
-  have : Nonempty s := One.nonempty
   simpa [-mk_eq_monoidOf_mk', mk_eq_mk_iff, r_iff_exists] using h
 #align localization.mk_left_injective Localization.mk_left_injective
 #align add_localization.mk_left_injective AddLocalization.mk_left_injective
 
 @[to_additive]
 theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
-  -- porting note: times out unless we add this `have`. Even `inferInstance` times out here.
-  have : Nonempty s := One.nonempty
   simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
 #align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'
 #align add_localization.mk_eq_mk_iff' AddLocalization.mk_eq_mk_iff'
feat: Lemma on Monoid Localization and Consequences on Minimal Primes (#9640)

Co-authored-by: Xavier Xarles <56635243+XavierXarles@users.noreply.github.com> Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>

Diff
@@ -584,6 +584,21 @@ theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2
 #align submonoid.localization_map.surj Submonoid.LocalizationMap.surj
 #align add_submonoid.localization_map.surj AddSubmonoid.LocalizationMap.surj
 
+/-- Given a localization map `f : M →* N`, and `z w : N`, there exist `z' w' : M` and `d : S`
+such that `f z' / f d = z` and `f w' / f d = w`. -/
+@[to_additive
+    "Given a localization map `f : M →+ N`, and `z w : N`, there exist `z' w' : M` and `d : S`
+such that `f z' - f d = z` and `f w' - f d = w`."]
+theorem surj₂ (f : LocalizationMap S N) (z w : N) : ∃ z' w' : M, ∃ d : S,
+    (z * f.toMap d = f.toMap z') ∧  (w * f.toMap d = f.toMap w') := by
+  let ⟨a, ha⟩ := surj f z
+  let ⟨b, hb⟩ := surj f w
+  refine ⟨a.1 * b.2, a.2 * b.1, a.2 * b.2, ?_, ?_⟩
+  · simp_rw [mul_def, map_mul, ← ha]
+    exact (mul_assoc z _ _).symm
+  · simp_rw [mul_def, map_mul, ← hb]
+    exact mul_left_comm w _ _
+
 @[to_additive]
 theorem eq_iff_exists (f : LocalizationMap S N) {x y} :
     f.toMap x = f.toMap y ↔ ∃ c : S, ↑c * x = c * y := Iff.intro (f.4 x y)
@@ -844,6 +859,12 @@ theorem mk'_cancel (a : M) (b c : S) :
     f.mk' (a * c) (b * c) = f.mk' a b :=
   mk'_eq_of_eq' f (by rw [Submonoid.coe_mul, mul_comm (b:M), mul_assoc])
 
+@[to_additive]
+theorem mk'_eq_of_same {a b} {d : S} :
+    f.mk' a d = f.mk' b d ↔ ∃ c : S, c * a = c * b := by
+  rw [mk'_eq_iff_eq', map_mul, map_mul, ← eq_iff_exists f]
+  exact (map_units f d).mul_left_inj
+
 @[to_additive (attr := simp)]
 theorem mk'_self' (y : S) : f.mk' (y : M) y = 1 :=
   show _ * _ = _ by rw [mul_inv_left, mul_one]
@@ -1251,6 +1272,25 @@ theorem map_map {A : Type*} [CommMonoid A] {U : Submonoid A} {R} [CommMonoid R]
 #align submonoid.localization_map.map_map Submonoid.LocalizationMap.map_map
 #align add_submonoid.localization_map.map_map AddSubmonoid.LocalizationMap.map_map
 
+/-- Given an injective `CommMonoid` homomorphism `g : M →* P`, and a submonoid `S ⊆ M`,
+the induced monoid homomorphism from the localization of `M` at `S` to the
+localization of `P` at `g S`, is injective.
+-/
+@[to_additive "Given an injective `AddCommMonoid` homomorphism `g : M →+ P`, and a
+submonoid `S ⊆ M`, the induced monoid homomorphism from the localization of `M` at `S`
+to the localization of `P` at `g S`, is injective. "]
+theorem map_injective_of_injective (hg : Injective g) (k : LocalizationMap (S.map g) Q) :
+    Injective (map f (apply_coe_mem_map g S) k) := fun z w hizw ↦ by
+  set i := map f (apply_coe_mem_map g S) k
+  have ifkg (a : M) : i (f.toMap a) = k.toMap (g a) := map_eq f (apply_coe_mem_map g S) a
+  let ⟨z', w', x, hxz, hxw⟩ := surj₂ f z w
+  have : k.toMap (g z') = k.toMap (g w')
+  · rw [← ifkg, ← ifkg, ← hxz, ← hxw, map_mul, map_mul, hizw]
+  obtain ⟨⟨_, c, hc, rfl⟩, eq⟩ := k.exists_of_eq _ _ this
+  simp_rw [← map_mul, hg.eq_iff] at eq
+  rw [← (f.map_units x).mul_left_inj, hxz, hxw, f.eq_iff_exists]
+  exact ⟨⟨c, hc⟩, eq⟩
+
 section AwayMap
 
 variable (x : M)
chore(*): rename FunLike to DFunLike (#9785)

This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.

This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:

sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean     
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean

Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -568,7 +568,7 @@ theorem ext_iff {f g : LocalizationMap S N} : f = g ↔ ∀ x, f.toMap x = g.toM
 
 @[to_additive]
 theorem toMap_injective : Function.Injective (@LocalizationMap.toMap _ _ S N _) :=
-  fun _ _ h ↦ ext <| FunLike.ext_iff.1 h
+  fun _ _ h ↦ ext <| DFunLike.ext_iff.1 h
 #align submonoid.localization_map.to_map_injective Submonoid.LocalizationMap.toMap_injective
 #align add_submonoid.localization_map.to_map_injective AddSubmonoid.LocalizationMap.toMap_injective
 
@@ -1061,7 +1061,7 @@ theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg
 
 @[to_additive (attr := simp)]
 theorem lift_id (x) : f.lift f.map_units x = x :=
-  FunLike.ext_iff.1 (f.lift_of_comp <| MonoidHom.id N) x
+  DFunLike.ext_iff.1 (f.lift_of_comp <| MonoidHom.id N) x
 #align submonoid.localization_map.lift_id Submonoid.LocalizationMap.lift_id
 #align add_submonoid.localization_map.lift_id AddSubmonoid.LocalizationMap.lift_id
 
@@ -1460,7 +1460,7 @@ theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
 @[to_additive]
 theorem mulEquivOfLocalizations_left_inv (k : N ≃* P) :
     f.mulEquivOfLocalizations (f.ofMulEquivOfLocalizations k) = k :=
-  FunLike.ext _ _ fun x ↦ FunLike.ext_iff.1 (f.lift_of_comp k.toMonoidHom) x
+  DFunLike.ext _ _ fun x ↦ DFunLike.ext_iff.1 (f.lift_of_comp k.toMonoidHom) x
 #align submonoid.localization_map.mul_equiv_of_localizations_left_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv
 #align add_submonoid.localization_map.add_equiv_of_localizations_left_neg AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg
 
chore: tidy various files (#9728)
Diff
@@ -1935,7 +1935,7 @@ theorem leftCancelMulZero_of_le_isLeftRegular
           ← mul_assoc w, ← mul_assoc w, mul_comm w]
       _ = a * z * g b.2 * (g x.2 * g y.2) := by rw [hazw]
       _ = a * g b.2 * (z * g x.2 * g y.2) := by
-        rw[mul_assoc a, mul_comm z, ← mul_assoc a, mul_assoc, mul_assoc z]
+        rw [mul_assoc a, mul_comm z, ← mul_assoc a, mul_assoc, mul_assoc z]
       _ = g b.1 * g (y.2 * x.1) := by rw [hx, hb, mul_comm (g x.1), ← map_mul g]
       _ = g (b.1 * (y.2 * x.1)):= by rw [← map_mul g]
  -- The hypothesis `h` gives that `f` (so, `g`) is injective, and we can cancel out `b.1`.
@@ -1945,12 +1945,15 @@ theorem leftCancelMulZero_of_le_isLeftRegular
 /-- Given a Localization map `f : M →*₀ N` for a Submonoid `S ⊆ M`,
 if `M` is a cancellative monoid with zero, and all elements of `S` are
 regular, then N is a cancellative monoid with zero.  -/
-theorem isLeftRegular_of_le_IsCancelMulZero (f : LocalizationWithZeroMap S N)
-    [IsCancelMulZero M] (h : ∀ ⦃x⦄, x ∈ S → IsRegular x): IsCancelMulZero N := by
-  have:IsLeftCancelMulZero N:=
+theorem isLeftRegular_of_le_isCancelMulZero (f : LocalizationWithZeroMap S N)
+    [IsCancelMulZero M] (h : ∀ ⦃x⦄, x ∈ S → IsRegular x) : IsCancelMulZero N := by
+  have : IsLeftCancelMulZero N :=
     leftCancelMulZero_of_le_isLeftRegular f (fun x h' => (h h').left)
   exact IsLeftCancelMulZero.to_isCancelMulZero
 
+@[deprecated isLeftRegular_of_le_isCancelMulZero] -- 2024-01-16
+alias isLeftRegular_of_le_IsCancelMulZero := isLeftRegular_of_le_isCancelMulZero
+
 end LocalizationWithZeroMap
 
 end Submonoid
feat: Injectivity of monoid localization (#9531)

Adds two results on the Localization for CommMonoids: one, describes exactly when the localization map is injective, the other essentially says that the localization of a cancellative Monoid is cancellative if the localization is injective.

Co-authored-by: Xavier Xarles <56635243+XavierXarles@users.noreply.github.com>

Diff
@@ -1609,6 +1609,21 @@ theorem of_mulEquivOfMulEquiv {k : LocalizationMap T Q} {j : M ≃* P} (H : S.ma
 #align submonoid.localization_map.of_mul_equiv_of_mul_equiv Submonoid.LocalizationMap.of_mulEquivOfMulEquiv
 #align add_submonoid.localization_map.of_add_equiv_of_add_equiv AddSubmonoid.LocalizationMap.of_addEquivOfAddEquiv
 
+@[to_additive]
+theorem toMap_injective_iff (f : LocalizationMap S N) :
+    Injective (LocalizationMap.toMap f) ↔ ∀ ⦃x⦄, x ∈ S → IsLeftRegular x := by
+  rw [Injective]
+  constructor <;> intro h
+  · intro x hx y z hyz
+    simp_rw [LocalizationMap.eq_iff_exists] at h
+    apply (fun y z _ => h) y z x
+    lift x to S using hx
+    use x
+  · intro a b hab
+    rw [LocalizationMap.eq_iff_exists] at hab
+    obtain ⟨c,hc⟩ := hab
+    apply (fun x a => h a) c (SetLike.coe_mem c) hc
+
 end LocalizationMap
 
 end Submonoid
@@ -1886,6 +1901,56 @@ noncomputable def lift (f : LocalizationWithZeroMap S N) (g : M →*₀ P)
       exact f.toMonoidWithZeroHom.map_zero.symm }
 #align submonoid.localization_with_zero_map.lift Submonoid.LocalizationWithZeroMap.lift
 
+/-- Given a Localization map `f : M →*₀ N` for a Submonoid `S ⊆ M`,
+if `M` is left cancellative monoid with zero, and all elements of `S` are
+left regular, then N is a left cancellative monoid with zero. -/
+theorem leftCancelMulZero_of_le_isLeftRegular
+    (f : LocalizationWithZeroMap S N) [IsLeftCancelMulZero M]
+    (h : ∀ ⦃x⦄, x ∈ S → IsLeftRegular x) : IsLeftCancelMulZero N := by
+  let fl := f.toLocalizationMap
+  let g := f.toMap
+  constructor
+  intro a z w ha hazw
+  obtain ⟨b, hb⟩ := LocalizationMap.surj fl a
+  obtain ⟨x, hx⟩ := LocalizationMap.surj fl z
+  obtain ⟨y, hy⟩ := LocalizationMap.surj fl w
+  rw [(LocalizationMap.eq_mk'_iff_mul_eq fl).mpr hx,
+    (LocalizationMap.eq_mk'_iff_mul_eq fl).mpr hy, LocalizationMap.eq]
+  use 1
+  rw [OneMemClass.coe_one, one_mul, one_mul]
+  -- The hypothesis `a ≠ 0` in `P` is equivalent to this
+  have b1ne0 : b.1 ≠ 0 := by
+    intro hb1
+    have m0 : (LocalizationMap.toMap fl) 0 = 0 := f.map_zero'
+    have a0 : a * (LocalizationMap.toMap fl) b.2 = 0 ↔ a = 0 :=
+      (f.toLocalizationMap.map_units' b.2).mul_left_eq_zero
+    rw [hb1, m0, a0] at hb
+    exact ha hb
+  have main : g (b.1 * (x.2 * y.1)) = g (b.1 * (y.2 * x.1)) :=
+    calc
+      g (b.1 * (x.2 * y.1)) = g b.1 * (g x.2 * g y.1) := by rw[map_mul g,map_mul g]
+      _ = a * g b.2 * (g x.2 * (w * g y.2)) := by rw[hb, hy]
+      _ = a * w * g b.2 * (g x.2 * g y.2) := by
+        rw [← mul_assoc, ← mul_assoc _ w, mul_comm _ w, mul_assoc w, mul_assoc,
+          ← mul_assoc w, ← mul_assoc w, mul_comm w]
+      _ = a * z * g b.2 * (g x.2 * g y.2) := by rw [hazw]
+      _ = a * g b.2 * (z * g x.2 * g y.2) := by
+        rw[mul_assoc a, mul_comm z, ← mul_assoc a, mul_assoc, mul_assoc z]
+      _ = g b.1 * g (y.2 * x.1) := by rw [hx, hb, mul_comm (g x.1), ← map_mul g]
+      _ = g (b.1 * (y.2 * x.1)):= by rw [← map_mul g]
+ -- The hypothesis `h` gives that `f` (so, `g`) is injective, and we can cancel out `b.1`.
+  exact (IsLeftCancelMulZero.mul_left_cancel_of_ne_zero b1ne0
+      ((LocalizationMap.toMap_injective_iff fl).mpr h main)).symm
+
+/-- Given a Localization map `f : M →*₀ N` for a Submonoid `S ⊆ M`,
+if `M` is a cancellative monoid with zero, and all elements of `S` are
+regular, then N is a cancellative monoid with zero.  -/
+theorem isLeftRegular_of_le_IsCancelMulZero (f : LocalizationWithZeroMap S N)
+    [IsCancelMulZero M] (h : ∀ ⦃x⦄, x ∈ S → IsRegular x): IsCancelMulZero N := by
+  have:IsLeftCancelMulZero N:=
+    leftCancelMulZero_of_le_isLeftRegular f (fun x h' => (h h').left)
+  exact IsLeftCancelMulZero.to_isCancelMulZero
+
 end LocalizationWithZeroMap
 
 end Submonoid
chore(*): replace $ with <| (#9319)

See Zulip thread for the discussion.

Diff
@@ -1934,7 +1934,7 @@ variable [OrderedCancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂
 instance le : LE (Localization s) :=
   ⟨fun a b =>
     Localization.liftOn₂ a b (fun a₁ a₂ b₁ b₂ => ↑b₂ * a₁ ≤ a₂ * b₁)
-      @fun a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd => propext $ by
+      @fun a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd => propext <| by
         obtain ⟨e, he⟩ := r_iff_exists.1 hab
         obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
         simp only [mul_right_inj] at he hf
@@ -1947,7 +1947,7 @@ instance le : LE (Localization s) :=
 instance lt : LT (Localization s) :=
   ⟨fun a b =>
     Localization.liftOn₂ a b (fun a₁ a₂ b₁ b₂ => ↑b₂ * a₁ < a₂ * b₁)
-      @fun a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd => propext $ by
+      @fun a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd => propext <| by
         obtain ⟨e, he⟩ := r_iff_exists.1 hab
         obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
         simp only [mul_right_inj] at he hf
chore(Algebra.Module.LocalizedModule): use IsLocalization instead of Localization (#9167)

The construction of LocalizedModule is done using IsLocalization rather than Localization. The corresponding instances for Localization are deduced automatically by Lean. One drawback is that many instances are now marked noncomputable.

Diff
@@ -839,6 +839,11 @@ theorem mk'_eq_of_eq' {a₁ b₁ : M} {a₂ b₂ : S} (H : b₁ * ↑a₂ = a₁
 #align submonoid.localization_map.mk'_eq_of_eq' Submonoid.LocalizationMap.mk'_eq_of_eq'
 #align add_submonoid.localization_map.mk'_eq_of_eq' AddSubmonoid.LocalizationMap.mk'_eq_of_eq'
 
+@[to_additive]
+theorem mk'_cancel (a : M) (b c : S) :
+    f.mk' (a * c) (b * c) = f.mk' a b :=
+  mk'_eq_of_eq' f (by rw [Submonoid.coe_mul, mul_comm (b:M), mul_assoc])
+
 @[to_additive (attr := simp)]
 theorem mk'_self' (y : S) : f.mk' (y : M) y = 1 :=
   show _ * _ = _ by rw [mul_inv_left, mul_one]
feat: If the monoid S contains 0 then the localization at S is trivial (#9207)
Diff
@@ -1794,6 +1794,14 @@ variable {M : Type*} [CommMonoidWithZero M] (S : Submonoid M) (N : Type*) [CommM
 
 namespace Submonoid
 
+variable {S N} in
+/-- If `S` contains `0` then the localization at `S` is trivial. -/
+theorem LocalizationMap.subsingleton  (f : Submonoid.LocalizationMap S N) (h : 0 ∈ S) :
+    Subsingleton N := by
+  refine ⟨fun a b ↦ ?_⟩
+  rw [← LocalizationMap.mk'_sec f a, ← LocalizationMap.mk'_sec f b, LocalizationMap.eq]
+  exact ⟨⟨0, h⟩, by simp only [zero_mul]⟩
+
 /-- The type of homomorphisms between monoids with zero satisfying the characteristic predicate:
 if `f : M →*₀ N` satisfies this predicate, then `N` is isomorphic to the localization of `M` at
 `S`. -/
chore(*): use ∃ x ∈ s, _ instead of ∃ (x) (_ : x ∈ s), _ (#9184)

Search for [∀∃].*(_ and manually replace some occurrences with more readable versions. In case of , the new expressions are defeq to the old ones. In case of , they differ by exists_prop.

In some rare cases, golf proofs that needed fixing.

Diff
@@ -355,13 +355,13 @@ then `f` is defined on the whole `Localization S`. -/
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d`,
 then `f` is defined on the whole `Localization S`."]
 def liftOn {p : Sort u} (x : Localization S) (f : M → S → p)
-    (H : ∀ {a c : M} {b d : S} (_ : r S (a, b) (c, d)), f a b = f c d) : p :=
+    (H : ∀ {a c : M} {b d : S}, r S (a, b) (c, d) → f a b = f c d) : p :=
   rec f (fun h ↦ (by simpa only [eq_rec_constant] using H h)) x
 #align localization.lift_on Localization.liftOn
 #align add_localization.lift_on AddLocalization.liftOn
 
 @[to_additive]
-theorem liftOn_mk {p : Sort u} (f : ∀ (_a : M) (_b : S), p) (H) (a : M) (b : S) :
+theorem liftOn_mk {p : Sort u} (f : M → S → p) (H) (a : M) (b : S) :
     liftOn (mk a b) f H = f a b := rfl
 #align localization.lift_on_mk Localization.liftOn_mk
 #align add_localization.lift_on_mk AddLocalization.liftOn_mk
@@ -388,7 +388,7 @@ then `f` is defined on the whole `Localization S`. -/
 for all `x` and `y`, such that `r S x x'` and `r S y y'` implies `f x y = f x' y'`,
 then `f` is defined on the whole `Localization S`."]
 def liftOn₂ {p : Sort u} (x y : Localization S) (f : M → S → M → S → p)
-    (H : ∀ {a a' b b' c c' d d'} (_ : r S (a, b) (a', b')) (_ : r S (c, d) (c', d')),
+    (H : ∀ {a a' b b' c c' d d'}, r S (a, b) (a', b') → r S (c, d) (c', d') →
       f a b c d = f a' b' c' d') : p :=
   liftOn x (fun a b ↦ liftOn y (f a b) fun hy ↦ H ((r S).refl _) hy) fun hx ↦
     induction_on y fun ⟨_, _⟩ ↦ H hx ((r S).refl _)
@@ -1660,7 +1660,7 @@ theorem mk_eq_monoidOf_mk' : mk = (monoidOf S).mk' :=
 universe u
 
 @[to_additive (attr := simp)]
-theorem liftOn_mk' {p : Sort u} (f : ∀ (_ : M) (_ : S), p) (H) (a : M) (b : S) :
+theorem liftOn_mk' {p : Sort u} (f : M → S → p) (H) (a : M) (b : S) :
     liftOn ((monoidOf S).mk' a b) f H = f a b := by rw [← mk_eq_monoidOf_mk', liftOn_mk]
 #align localization.lift_on_mk' Localization.liftOn_mk'
 #align add_localization.lift_on_mk' AddLocalization.liftOn_mk'
@@ -1841,7 +1841,7 @@ instance : CommMonoidWithZero (Localization S) where
     simp only [← Localization.mk_zero y.2, mk_mul, mk_eq_mk_iff, mul_zero, zero_mul, r_of_eq]
 #align localization.mk_zero Localization.mk_zero
 
-theorem liftOn_zero {p : Type*} (f : ∀ (_ : M) (_ : S), p) (H) : liftOn 0 f H = f 0 1 := by
+theorem liftOn_zero {p : Type*} (f : M → S → p) (H) : liftOn 0 f H = f 0 1 := by
   rw [← mk_zero 1, liftOn_mk]
 #align localization.lift_on_zero Localization.liftOn_zero
 
chore: replace IsLocalization.eq_iff_exists' by exists_of_eq (#8335)

The other direction is a consequence of IsLocalization.map_units.

Also do the same for LocalizationMap and IsLocalizedModule.

This means we have one less fact to prove when constructing an IsLocalization (etc.) instance (thus many proofs are golfed), but once we construct it we still have access to the eq_iff_exists lemmas (without the prime) so the API doesn't get less powerful.

Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>

Diff
@@ -21,7 +21,8 @@ isomorphism; that is, a commutative monoid `N` is the localization of `M` at `S`
 monoid homomorphism `f : M →* N` satisfying 3 properties:
 1. For all `y ∈ S`, `f y` is a unit;
 2. For all `z : N`, there exists `(x, y) : M × S` such that `z * f y = f x`;
-3. For all `x, y : M`, `f x = f y` iff there exists `c ∈ S` such that `x * c = y * c`.
+3. For all `x, y : M` such that `f x = f y`, there exists `c ∈ S` such that `x * c = y * c`.
+   (The converse is a consequence of 1.)
 
 Given such a localization map `f : M →* N`, we can define the surjection
 `Submonoid.LocalizationMap.mk'` sending `(x, y) : M × S` to `f x * (f y)⁻¹`, and
@@ -88,12 +89,12 @@ satisfies this predicate, then `N` is isomorphic to the localization of `M` at `
 structure LocalizationMap extends AddMonoidHom M N where
   map_add_units' : ∀ y : S, IsAddUnit (toFun y)
   surj' : ∀ z : N, ∃ x : M × S, z + toFun x.2 = toFun x.1
-  eq_iff_exists' : ∀ x y, toFun x = toFun y ↔ ∃ c : S, ↑c + x = ↑c + y
+  exists_of_eq : ∀ x y, toFun x = toFun y → ∃ c : S, ↑c + x = ↑c + y
 #align add_submonoid.localization_map AddSubmonoid.LocalizationMap
 
 -- Porting note: no docstrings for AddSubmonoid.LocalizationMap
 attribute [nolint docBlame] AddSubmonoid.LocalizationMap.map_add_units'
-  AddSubmonoid.LocalizationMap.surj' AddSubmonoid.LocalizationMap.eq_iff_exists'
+  AddSubmonoid.LocalizationMap.surj' AddSubmonoid.LocalizationMap.exists_of_eq
 
 /-- The AddMonoidHom underlying a `LocalizationMap` of `AddCommMonoid`s. -/
 add_decl_doc LocalizationMap.toAddMonoidHom
@@ -114,12 +115,12 @@ satisfies this predicate, then `N` is isomorphic to the localization of `M` at `
 structure LocalizationMap extends MonoidHom M N where
   map_units' : ∀ y : S, IsUnit (toFun y)
   surj' : ∀ z : N, ∃ x : M × S, z * toFun x.2 = toFun x.1
-  eq_iff_exists' : ∀ x y, toFun x = toFun y ↔ ∃ c : S, ↑c * x = c * y
+  exists_of_eq : ∀ x y, toFun x = toFun y → ∃ c : S, ↑c * x = c * y
 #align submonoid.localization_map Submonoid.LocalizationMap
 
 -- Porting note: no docstrings for Submonoid.LocalizationMap
 attribute [nolint docBlame] Submonoid.LocalizationMap.map_units' Submonoid.LocalizationMap.surj'
-  Submonoid.LocalizationMap.eq_iff_exists'
+  Submonoid.LocalizationMap.exists_of_eq
 
 attribute [to_additive] Submonoid.LocalizationMap
 
@@ -529,12 +530,12 @@ namespace MonoidHom
 @[to_additive
     "Makes a localization map from an `AddCommMonoid` hom satisfying the characteristic predicate."]
 def toLocalizationMap (f : M →* N) (H1 : ∀ y : S, IsUnit (f y))
-    (H2 : ∀ z, ∃ x : M × S, z * f x.2 = f x.1) (H3 : ∀ x y, f x = f y ↔ ∃ c : S, ↑c * x = ↑c * y) :
+    (H2 : ∀ z, ∃ x : M × S, z * f x.2 = f x.1) (H3 : ∀ x y, f x = f y → ∃ c : S, ↑c * x = ↑c * y) :
     Submonoid.LocalizationMap S N :=
   { f with
     map_units' := H1
     surj' := H2
-    eq_iff_exists' := H3 }
+    exists_of_eq := H3 }
 #align monoid_hom.to_localization_map MonoidHom.toLocalizationMap
 #align add_monoid_hom.to_localization_map AddMonoidHom.toLocalizationMap
 
@@ -585,7 +586,11 @@ theorem surj (f : LocalizationMap S N) (z : N) : ∃ x : M × S, z * f.toMap x.2
 
 @[to_additive]
 theorem eq_iff_exists (f : LocalizationMap S N) {x y} :
-    f.toMap x = f.toMap y ↔ ∃ c : S, ↑c * x = c * y := f.4 x y
+    f.toMap x = f.toMap y ↔ ∃ c : S, ↑c * x = c * y := Iff.intro (f.4 x y)
+  fun ⟨c, h⟩ ↦ by
+    replace h := congr_arg f.toMap h
+    rw [map_mul, map_mul] at h
+    exact (f.map_units c).mul_right_inj.mp h
 #align submonoid.localization_map.eq_iff_exists Submonoid.LocalizationMap.eq_iff_exists
 #align add_submonoid.localization_map.eq_iff_exists AddSubmonoid.LocalizationMap.eq_iff_exists
 
@@ -1398,7 +1403,7 @@ def ofMulEquivOfLocalizations (k : N ≃* P) : LocalizationMap S P :=
       let ⟨z, hz⟩ := k.toEquiv.surjective v
       let ⟨x, hx⟩ := f.surj z
       ⟨x, show v * k _ = k _ by rw [← hx, k.map_mul, ← hz]; rfl⟩)
-    fun x y ↦ k.apply_eq_iff_eq.trans f.eq_iff_exists
+    fun x y ↦ (k.apply_eq_iff_eq.trans f.eq_iff_exists).1
 #align submonoid.localization_map.of_mul_equiv_of_localizations Submonoid.LocalizationMap.ofMulEquivOfLocalizations
 #align add_submonoid.localization_map.of_add_equiv_of_localizations AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations
 
@@ -1496,16 +1501,13 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
       ⟨(v, ⟨w, H' ▸ show k w ∈ S from hw.symm ▸ x.2.2⟩),
         show z * f.toMap (k.toEquiv w) = f.toMap (k.toEquiv v) by erw [hv, hw, hx]⟩)
     fun x y ↦
-    show f.toMap _ = f.toMap _ ↔ _ by
+    show f.toMap _ = f.toMap _ → _ by
       erw [f.eq_iff_exists]
       exact
-        ⟨fun ⟨c, hc⟩ ↦
+        fun ⟨c, hc⟩ ↦
           let ⟨d, hd⟩ := k.toEquiv.surjective c
           ⟨⟨d, H' ▸ show k d ∈ S from hd.symm ▸ c.2⟩, by
-            erw [← hd, ← k.map_mul, ← k.map_mul] at hc; exact k.toEquiv.injective hc⟩,
-          fun ⟨c, hc⟩ ↦
-          ⟨⟨k c, H ▸ Set.mem_image_of_mem k c.2⟩, by
-            erw [← k.map_mul]; rw [hc, k.map_mul]; rfl⟩⟩
+            erw [← hd, ← k.map_mul, ← k.map_mul] at hc; exact k.toEquiv.injective hc⟩
 #align submonoid.localization_map.of_mul_equiv_of_dom Submonoid.LocalizationMap.ofMulEquivOfDom
 #align add_submonoid.localization_map.of_add_equiv_of_dom AddSubmonoid.LocalizationMap.ofAddEquivOfDom
 
@@ -1625,7 +1627,7 @@ def monoidOf : Submonoid.LocalizationMap S (Localization S) :=
       isUnit_iff_exists_inv.2 ⟨mk 1 y, by dsimp only; rw [mk_mul, mul_one, one_mul, mk_self]⟩
     surj' := fun z ↦ induction_on z fun x ↦
       ⟨x, by dsimp only; rw [mk_mul, mul_comm x.fst, ← mk_mul, mk_self, one_mul]⟩
-    eq_iff_exists' := fun x y ↦
+    exists_of_eq := fun x y ↦ Iff.mp <|
       mk_eq_mk_iff.trans <|
         r_iff_exists.trans <|
           show (∃ c : S, ↑c * (1 * x) = c * (1 * y)) ↔ _ by rw [one_mul, one_mul] }
chore: cleanup some spaces (#7490)

Purely cosmetic PR

Diff
@@ -1517,7 +1517,7 @@ theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
 
 @[to_additive]
 theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.toMonoidHom = S) :
-    (f.ofMulEquivOfDom H).toMap = f.toMap.comp k.toMonoidHom :=rfl
+    (f.ofMulEquivOfDom H).toMap = f.toMap.comp k.toMonoidHom := rfl
 #align submonoid.localization_map.of_mul_equiv_of_dom_eq Submonoid.LocalizationMap.ofMulEquivOfDom_eq
 #align add_submonoid.localization_map.of_add_equiv_of_dom_eq AddSubmonoid.LocalizationMap.ofAddEquivOfDom_eq
 
chore: cleanup Mathlib.Init.Data.Prod (#6972)

Removing from Mathlib.Init.Data.Prod from the early parts of the import hierarchy.

While at it, remove unnecessary uses of Prod.mk.eta across the library.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -3,6 +3,7 @@ Copyright (c) 2019 Amelia Livingston. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Amelia Livingston
 -/
+import Mathlib.Init.Data.Prod
 import Mathlib.GroupTheory.Congruence
 import Mathlib.GroupTheory.Submonoid.Membership
 import Mathlib.Algebra.Group.Units
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -78,7 +78,7 @@ commutative monoid, grothendieck group
 open Function
 namespace AddSubmonoid
 
-variable {M : Type _} [AddCommMonoid M] (S : AddSubmonoid M) (N : Type _) [AddCommMonoid N]
+variable {M : Type*} [AddCommMonoid M] (S : AddSubmonoid M) (N : Type*) [AddCommMonoid N]
 
 /-- The type of AddMonoid homomorphisms satisfying the characteristic predicate: if `f : M →+ N`
 satisfies this predicate, then `N` is isomorphic to the localization of `M` at `S`. -/
@@ -101,7 +101,7 @@ end AddSubmonoid
 
 section CommMonoid
 
-variable {M : Type _} [CommMonoid M] (S : Submonoid M) (N : Type _) [CommMonoid N] {P : Type _}
+variable {M : Type*} [CommMonoid M] (S : Submonoid M) (N : Type*) [CommMonoid N] {P : Type*}
   [CommMonoid P]
 
 namespace Submonoid
@@ -394,7 +394,7 @@ def liftOn₂ {p : Sort u} (x y : Localization S) (f : M → S → M → S → p
 #align add_localization.lift_on₂ AddLocalization.liftOn₂
 
 @[to_additive]
-theorem liftOn₂_mk {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
+theorem liftOn₂_mk {p : Sort*} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
     liftOn₂ (mk a b) (mk c d) f H = f a b c d := rfl
 #align localization.lift_on₂_mk Localization.liftOn₂_mk
 #align add_localization.lift_on₂_mk AddLocalization.liftOn₂_mk
@@ -434,7 +434,7 @@ theorem mk_self (a : S) : mk (a : M) a = 1 := by
 
 section Scalar
 
-variable {R R₁ R₂ : Type _}
+variable {R R₁ R₂ : Type*}
 
 /-- Scalar multiplication in a monoid localization is defined as `c • ⟨a, b⟩ = ⟨c • a, b⟩`. -/
 protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Localization S) :
@@ -472,7 +472,7 @@ instance [SMul R₁ M] [SMul R₂ M] [IsScalarTower R₁ M M] [IsScalarTower R
   [IsScalarTower R₁ R₂ M] : IsScalarTower R₁ R₂ (Localization S) where
   smul_assoc s t := Localization.ind <| Prod.rec fun r x ↦ by simp only [smul_mk, smul_assoc s t r]
 
-instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
+instance smulCommClass_right {R : Type*} [SMul R M] [IsScalarTower R M M] :
   SMulCommClass R (Localization S) (Localization S) where
   smul_comm s :=
       Localization.ind <|
@@ -482,7 +482,7 @@ instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
               simp only [smul_mk, smul_eq_mul, mk_mul, mul_comm r₁, smul_mul_assoc]
 #align localization.smul_comm_class_right Localization.smulCommClass_right
 
-instance isScalarTower_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
+instance isScalarTower_right {R : Type*} [SMul R M] [IsScalarTower R M M] :
   IsScalarTower R (Localization S) (Localization S) where
   smul_assoc s :=
     Localization.ind <|
@@ -904,7 +904,7 @@ theorem eq_of_eq (hg : ∀ y : S, IsUnit (g y)) {x y} (h : f.toMap x = f.toMap y
     "Given `AddCommMonoid`s `M, P`, Localization maps `f : M →+ N, k : P →+ Q` for Submonoids
 `S, T` respectively, and `g : M →+ P` such that `g(S) ⊆ T`, `f x = f y`
 implies `k (g x) = k (g y)`."]
-theorem comp_eq_of_eq {T : Submonoid P} {Q : Type _} [CommMonoid Q] (hg : ∀ y : S, g y ∈ T)
+theorem comp_eq_of_eq {T : Submonoid P} {Q : Type*} [CommMonoid Q] (hg : ∀ y : S, g y ∈ T)
     (k : LocalizationMap T Q) {x y} (h : f.toMap x = f.toMap y) : k.toMap (g x) = k.toMap (g y) :=
   f.eq_of_eq (fun y : S ↦ show IsUnit (k.toMap.comp g y) from k.map_units ⟨g y, hg y⟩) h
 #align submonoid.localization_map.comp_eq_of_eq Submonoid.LocalizationMap.comp_eq_of_eq
@@ -1113,7 +1113,7 @@ theorem lift_injective_iff :
 #align submonoid.localization_map.lift_injective_iff Submonoid.LocalizationMap.lift_injective_iff
 #align add_submonoid.localization_map.lift_injective_iff AddSubmonoid.LocalizationMap.lift_injective_iff
 
-variable {T : Submonoid P} (hy : ∀ y : S, g y ∈ T) {Q : Type _} [CommMonoid Q]
+variable {T : Submonoid P} (hy : ∀ y : S, g y ∈ T) {Q : Type*} [CommMonoid Q]
   (k : LocalizationMap T Q)
 
 /-- Given a `CommMonoid` homomorphism `g : M →* P` where for Submonoids `S ⊆ M, T ⊆ P` we have
@@ -1208,7 +1208,7 @@ of the induced maps equals the map of localizations induced by `l ∘ g`. -/
 @[to_additive
     "If `AddCommMonoid` homs `g : M →+ P, l : P →+ A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`."]
-theorem map_comp_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMonoid R]
+theorem map_comp_map {A : Type*} [CommMonoid A] {U : Submonoid A} {R} [CommMonoid R]
     (j : LocalizationMap U R) {l : P →* A} (hl : ∀ w : T, l w ∈ U) :
     (k.map hl j).comp (f.map hy k) =
     f.map (fun x ↦ show l.comp g x ∈ U from hl ⟨g x, hy x⟩) j := by
@@ -1228,7 +1228,7 @@ of the induced maps equals the map of localizations induced by `l ∘ g`. -/
 @[to_additive
     "If `AddCommMonoid` homs `g : M →+ P, l : P →+ A` induce maps of localizations, the composition
 of the induced maps equals the map of localizations induced by `l ∘ g`."]
-theorem map_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMonoid R]
+theorem map_map {A : Type*} [CommMonoid A] {U : Submonoid A} {R} [CommMonoid R]
     (j : LocalizationMap U R) {l : P →* A} (hl : ∀ w : T, l w ∈ U) (x) :
     k.map hl j (f.map hy k x) = f.map (fun x ↦ show l.comp g x ∈ U from hl ⟨g x, hy x⟩) j x := by
 -- Porting note: Lean has a hard time figuring out what the implicit arguments should be
@@ -1249,7 +1249,7 @@ is isomorphic to the Localization of `M` at the Submonoid generated by `x`. -/
 @[to_additive (attr := reducible)
     "Given `x : M`, the type of `AddCommMonoid` homomorphisms `f : M →+ N` such that `N`
 is isomorphic to the localization of `M` at the AddSubmonoid generated by `x`."]
-def AwayMap (N' : Type _) [CommMonoid N'] := LocalizationMap (powers x) N'
+def AwayMap (N' : Type*) [CommMonoid N'] := LocalizationMap (powers x) N'
 #align submonoid.localization_map.away_map Submonoid.LocalizationMap.AwayMap
 #align add_submonoid.localization_map.away_map AddSubmonoid.LocalizationMap.AwayMap
 
@@ -1301,8 +1301,8 @@ namespace LocalizationMap
 
 section AwayMap
 
-variable {A : Type _} [AddCommMonoid A] (x : A) {B : Type _} [AddCommMonoid B] (F : AwayMap x B)
-  {C : Type _} [AddCommMonoid C] {g : A →+ C}
+variable {A : Type*} [AddCommMonoid A] (x : A) {B : Type*} [AddCommMonoid B] (F : AwayMap x B)
+  {C : Type*} [AddCommMonoid C] {g : A →+ C}
 
 /-- Given `x : A` and a Localization map `F : A →+ B` away from `x`, `neg_self` is `- (F x)`. -/
 noncomputable def AwayMap.negSelf : B :=
@@ -1352,7 +1352,7 @@ namespace Submonoid
 namespace LocalizationMap
 
 variable (f : S.LocalizationMap N) {g : M →* P} (hg : ∀ y : S, IsUnit (g y)) {T : Submonoid P}
-  {Q : Type _} [CommMonoid Q]
+  {Q : Type*} [CommMonoid Q]
 
 /-- If `f : M →* N` and `k : M →* P` are Localization maps for a Submonoid `S`, we get an
 isomorphism of `N` and `P`. -/
@@ -1663,7 +1663,7 @@ theorem liftOn_mk' {p : Sort u} (f : ∀ (_ : M) (_ : S), p) (H) (a : M) (b : S)
 #align add_localization.lift_on_mk' AddLocalization.liftOn_mk'
 
 @[to_additive (attr := simp)]
-theorem liftOn₂_mk' {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
+theorem liftOn₂_mk' {p : Sort*} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
     liftOn₂ ((monoidOf S).mk' a b) ((monoidOf S).mk' c d) f H = f a b c d := by
   rw [← mk_eq_monoidOf_mk', liftOn₂_mk]
 #align localization.lift_on₂_mk' Localization.liftOn₂_mk'
@@ -1786,8 +1786,8 @@ end CommMonoid
 
 section CommMonoidWithZero
 
-variable {M : Type _} [CommMonoidWithZero M] (S : Submonoid M) (N : Type _) [CommMonoidWithZero N]
-  {P : Type _} [CommMonoidWithZero P]
+variable {M : Type*} [CommMonoidWithZero M] (S : Submonoid M) (N : Type*) [CommMonoidWithZero N]
+  {P : Type*} [CommMonoidWithZero P]
 
 namespace Submonoid
 
@@ -1838,7 +1838,7 @@ instance : CommMonoidWithZero (Localization S) where
     simp only [← Localization.mk_zero y.2, mk_mul, mk_eq_mk_iff, mul_zero, zero_mul, r_of_eq]
 #align localization.mk_zero Localization.mk_zero
 
-theorem liftOn_zero {p : Type _} (f : ∀ (_ : M) (_ : S), p) (H) : liftOn 0 f H = f 0 1 := by
+theorem liftOn_zero {p : Type*} (f : ∀ (_ : M) (_ : S), p) (H) : liftOn 0 f H = f 0 1 := by
   rw [← mk_zero 1, liftOn_mk]
 #align localization.lift_on_zero Localization.liftOn_zero
 
@@ -1878,7 +1878,7 @@ end CommMonoidWithZero
 
 namespace Localization
 
-variable {α : Type _} [CancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
+variable {α : Type*} [CancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
 
 @[to_additive]
 theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
@@ -1908,7 +1908,7 @@ end Localization
 
 namespace Localization
 
-variable {α : Type _}
+variable {α : Type*}
 
 section OrderedCancelCommMonoid
 
chore: ensure all instances referred to directly have explicit names (#6423)

Per https://github.com/leanprover/lean4/issues/2343, we are going to need to change the automatic generation of instance names, as they become too long.

This PR ensures that everywhere in Mathlib that refers to an instance by name, that name is given explicitly, rather than being automatically generated.

There are four exceptions, which are now commented, with links to https://github.com/leanprover/lean4/issues/2343.

This was implemented by running Mathlib against a modified Lean that appended _ᾰ to all automatically generated names, and fixing everything.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -454,7 +454,8 @@ protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Loc
         simp only [mul_smul_comm, ht]))
 #align localization.smul Localization.smul
 
-instance [SMul R M] [IsScalarTower R M M] : SMul R (Localization S) where smul := Localization.smul
+instance instSMulLocalization [SMul R M] [IsScalarTower R M M] : SMul R (Localization S) where
+  smul := Localization.smul
 
 theorem smul_mk [SMul R M] [IsScalarTower R M M] (c : R) (a b) :
     c • (mk a b : Localization S) = mk (c • a) b := by
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2019 Amelia Livingston. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Amelia Livingston
-
-! This file was ported from Lean 3 source module group_theory.monoid_localization
-! leanprover-community/mathlib commit 10ee941346c27bdb5e87bb3535100c0b1f08ac41
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.GroupTheory.Congruence
 import Mathlib.GroupTheory.Submonoid.Membership
 import Mathlib.Algebra.Group.Units
 
+#align_import group_theory.monoid_localization from "leanprover-community/mathlib"@"10ee941346c27bdb5e87bb3535100c0b1f08ac41"
+
 /-!
 # Localizations of commutative monoids
 
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -1366,7 +1366,7 @@ noncomputable def mulEquivOfLocalizations (k : LocalizationMap S P) : N ≃* P :
   invFun := k.lift f.map_units
   left_inv := f.lift_left_inverse
   right_inv := k.lift_left_inverse
-  map_mul' :=  MonoidHom.map_mul _ }
+  map_mul' := MonoidHom.map_mul _ }
 #align submonoid.localization_map.mul_equiv_of_localizations Submonoid.LocalizationMap.mulEquivOfLocalizations
 #align add_submonoid.localization_map.add_equiv_of_localizations AddSubmonoid.LocalizationMap.addEquivOfLocalizations
 
chore: remove occurrences of semicolon after space (#5713)

This is the second half of the changes originally in #5699, removing all occurrences of ; after a space and implementing a linter rule to enforce it.

In most cases this 2-character substring has a space after it, so the following command was run first:

find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;

The remaining cases were few enough in number that they were done manually.

Diff
@@ -171,13 +171,13 @@ def r' : Con (M × S) := by
     simp only [Submonoid.coe_mul]
     calc
       (t₂ * t₁ * b.2 : M) * (c.2 * a.1) = t₂ * c.2 * (t₁ * (b.2 * a.1)) := by ac_rfl
-      _ = t₁ * a.2 * (t₂ * (c.2 * b.1)) := by rw [ht₁] ; ac_rfl
-      _ = t₂ * t₁ * b.2 * (a.2 * c.1) := by rw [ht₂] ; ac_rfl
+      _ = t₁ * a.2 * (t₂ * (c.2 * b.1)) := by rw [ht₁]; ac_rfl
+      _ = t₂ * t₁ * b.2 * (a.2 * c.1) := by rw [ht₂]; ac_rfl
   · rintro a b c d ⟨t₁, ht₁⟩ ⟨t₂, ht₂⟩
     use t₂ * t₁
     calc
       (t₂ * t₁ : M) * (b.2 * d.2 * (a.1 * c.1)) = t₂ * (d.2 * c.1) * (t₁ * (b.2 * a.1)) := by ac_rfl
-      _ = (t₂ * t₁ : M) * (a.2 * c.2 * (b.1 * d.1)) := by rw [ht₁, ht₂] ; ac_rfl
+      _ = (t₂ * t₁ : M) * (a.2 * c.2 * (b.1 * d.1)) := by rw [ht₁, ht₂]; ac_rfl
 #align localization.r' Localization.r'
 #align add_localization.r' AddLocalization.r'
 
@@ -203,7 +203,7 @@ variable {S}
 
 @[to_additive AddLocalization.r_iff_exists]
 theorem r_iff_exists {x y : M × S} : r S x y ↔ ∃ c : S, ↑c * (↑y.2 * x.1) = c * (x.2 * y.1) := by
-  rw [r_eq_r' S] ; rfl
+  rw [r_eq_r' S]; rfl
 #align localization.r_iff_exists Localization.r_iff_exists
 #align add_localization.r_iff_exists AddLocalization.r_iff_exists
 
@@ -307,7 +307,7 @@ then `f` is defined on the whole `AddLocalization S`."]
 def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
     (H : ∀ {a c : M} {b d : S} (h : r S (a, b) (c, d)),
       (Eq.ndrec (f a b) (mk_eq_mk_iff.mpr h) : p (mk c d)) = f c d) (x) : p x :=
-  Quot.rec (fun y ↦ Eq.ndrec (f y.1 y.2) (by rfl)) (fun y z h ↦ by cases y ; cases z ; exact H h) x
+  Quot.rec (fun y ↦ Eq.ndrec (f y.1 y.2) (by rfl)) (fun y z h ↦ by cases y; cases z; exact H h) x
 #align localization.rec Localization.rec
 #align add_localization.rec AddLocalization.rec
 
@@ -925,13 +925,13 @@ induced from `N` to `P` sending `z : N` to `g x - g y`, where `(x, y) : M × S`
 `z = f x - f y`."]
 noncomputable def lift : N →* P where
   toFun z := g (f.sec z).1 * (IsUnit.liftRight (g.restrict S) hg (f.sec z).2)⁻¹
-  map_one' := by rw [mul_inv_left, mul_one] ; exact f.eq_of_eq hg (by rw [← sec_spec, one_mul])
+  map_one' := by rw [mul_inv_left, mul_one]; exact f.eq_of_eq hg (by rw [← sec_spec, one_mul])
   map_mul' x y := by
     dsimp only
     rw [mul_inv_left hg, ← mul_assoc, ← mul_assoc, mul_inv_right hg, mul_comm _ (g (f.sec y).1), ←
       mul_assoc, ← mul_assoc, mul_inv_right hg]
     repeat' rw [← g.map_mul]
-    exact f.eq_of_eq hg (by simp_rw [f.toMap.map_mul, sec_spec'] ; ac_rfl)
+    exact f.eq_of_eq hg (by simp_rw [f.toMap.map_mul, sec_spec']; ac_rfl)
 #align submonoid.localization_map.lift Submonoid.LocalizationMap.lift
 #align add_submonoid.localization_map.lift AddSubmonoid.LocalizationMap.lift
 
@@ -978,7 +978,7 @@ theorem lift_spec_mul (z w v) : f.lift hg z * w = v ↔ g (f.sec z).1 * w = g (f
 
 @[to_additive]
 theorem lift_mk'_spec (x v) (y : S) : f.lift hg (f.mk' x y) = v ↔ g x = g y * v := by
-  rw [f.lift_mk' hg] ; exact mul_inv_left hg _ _ _
+  rw [f.lift_mk' hg]; exact mul_inv_left hg _ _ _
 #align submonoid.localization_map.lift_mk'_spec Submonoid.LocalizationMap.lift_mk'_spec
 #align add_submonoid.localization_map.lift_mk'_spec AddSubmonoid.LocalizationMap.lift_mk'_spec
 
@@ -1008,7 +1008,7 @@ theorem lift_mul_left (z) : g (f.sec z).2 * f.lift hg z = g (f.sec z).1 := by
 
 @[to_additive (attr := simp)]
 theorem lift_eq (x : M) : f.lift hg (f.toMap x) = g x := by
-  rw [lift_spec, ← g.map_mul] ; exact f.eq_of_eq hg (by rw [sec_spec', f.toMap.map_mul])
+  rw [lift_spec, ← g.map_mul]; exact f.eq_of_eq hg (by rw [sec_spec', f.toMap.map_mul])
 #align submonoid.localization_map.lift_eq Submonoid.LocalizationMap.lift_eq
 #align add_submonoid.localization_map.lift_eq AddSubmonoid.LocalizationMap.lift_eq
 
@@ -1020,7 +1020,7 @@ theorem lift_eq_iff {x y : M × S} :
 #align add_submonoid.localization_map.lift_eq_iff AddSubmonoid.LocalizationMap.lift_eq_iff
 
 @[to_additive (attr := simp)]
-theorem lift_comp : (f.lift hg).comp f.toMap = g := by ext ; exact f.lift_eq hg _
+theorem lift_comp : (f.lift hg).comp f.toMap = g := by ext; exact f.lift_eq hg _
 #align submonoid.localization_map.lift_comp Submonoid.LocalizationMap.lift_comp
 #align add_submonoid.localization_map.lift_comp AddSubmonoid.LocalizationMap.lift_comp
 
@@ -1398,7 +1398,7 @@ def ofMulEquivOfLocalizations (k : N ≃* P) : LocalizationMap S P :=
     (fun v ↦
       let ⟨z, hz⟩ := k.toEquiv.surjective v
       let ⟨x, hx⟩ := f.surj z
-      ⟨x, show v * k _ = k _ by rw [← hx, k.map_mul, ← hz] ; rfl⟩)
+      ⟨x, show v * k _ = k _ by rw [← hx, k.map_mul, ← hz]; rfl⟩)
     fun x y ↦ k.apply_eq_iff_eq.trans f.eq_iff_exists
 #align submonoid.localization_map.of_mul_equiv_of_localizations Submonoid.LocalizationMap.ofMulEquivOfLocalizations
 #align add_submonoid.localization_map.of_add_equiv_of_localizations AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations
@@ -1464,7 +1464,7 @@ theorem mulEquivOfLocalizations_left_inv_apply {k : N ≃* P} (x) :
 
 @[to_additive (attr := simp)]
 theorem ofMulEquivOfLocalizations_id : f.ofMulEquivOfLocalizations (MulEquiv.refl N) = f := by
-  ext ; rfl
+  ext; rfl
 #align submonoid.localization_map.of_mul_equiv_of_localizations_id Submonoid.LocalizationMap.ofMulEquivOfLocalizations_id
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_id AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_id
 
@@ -1472,7 +1472,7 @@ theorem ofMulEquivOfLocalizations_id : f.ofMulEquivOfLocalizations (MulEquiv.ref
 theorem ofMulEquivOfLocalizations_comp {k : N ≃* P} {j : P ≃* Q} :
     (f.ofMulEquivOfLocalizations (k.trans j)).toMap =
       j.toMonoidHom.comp (f.ofMulEquivOfLocalizations k).toMap :=
-  by ext ; rfl
+  by ext; rfl
 #align submonoid.localization_map.of_mul_equiv_of_localizations_comp Submonoid.LocalizationMap.ofMulEquivOfLocalizations_comp
 #align add_submonoid.localization_map.of_add_equiv_of_localizations_comp AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_comp
 
@@ -1498,15 +1498,15 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
         show z * f.toMap (k.toEquiv w) = f.toMap (k.toEquiv v) by erw [hv, hw, hx]⟩)
     fun x y ↦
     show f.toMap _ = f.toMap _ ↔ _ by
-      erw [f.eq_iff_exists] ;
-        exact
-          ⟨fun ⟨c, hc⟩ ↦
-            let ⟨d, hd⟩ := k.toEquiv.surjective c
-            ⟨⟨d, H' ▸ show k d ∈ S from hd.symm ▸ c.2⟩, by
-              erw [← hd, ← k.map_mul, ← k.map_mul] at hc ; exact k.toEquiv.injective hc⟩,
-            fun ⟨c, hc⟩ ↦
-            ⟨⟨k c, H ▸ Set.mem_image_of_mem k c.2⟩, by
-              erw [← k.map_mul] ; rw [hc, k.map_mul] ; rfl⟩⟩
+      erw [f.eq_iff_exists]
+      exact
+        ⟨fun ⟨c, hc⟩ ↦
+          let ⟨d, hd⟩ := k.toEquiv.surjective c
+          ⟨⟨d, H' ▸ show k d ∈ S from hd.symm ▸ c.2⟩, by
+            erw [← hd, ← k.map_mul, ← k.map_mul] at hc; exact k.toEquiv.injective hc⟩,
+          fun ⟨c, hc⟩ ↦
+          ⟨⟨k c, H ▸ Set.mem_image_of_mem k c.2⟩, by
+            erw [← k.map_mul]; rw [hc, k.map_mul]; rfl⟩⟩
 #align submonoid.localization_map.of_mul_equiv_of_dom Submonoid.LocalizationMap.ofMulEquivOfDom
 #align add_submonoid.localization_map.of_add_equiv_of_dom AddSubmonoid.LocalizationMap.ofAddEquivOfDom
 
@@ -1541,7 +1541,7 @@ theorem ofMulEquivOfDom_id :
     f.ofMulEquivOfDom
         (show S.map (MulEquiv.refl M).toMonoidHom = S from
           Submonoid.ext fun x ↦ ⟨fun ⟨_, hy, h⟩ ↦ h ▸ hy, fun h ↦ ⟨x, h, rfl⟩⟩) = f :=
-  by ext ; rfl
+  by ext; rfl
 #align submonoid.localization_map.of_mul_equiv_of_dom_id Submonoid.LocalizationMap.ofMulEquivOfDom_id
 #align add_submonoid.localization_map.of_add_equiv_of_dom_id AddSubmonoid.LocalizationMap.ofAddEquivOfDom_id
 
@@ -1645,7 +1645,7 @@ theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
   show _ = _ * _ from
     (Submonoid.LocalizationMap.mul_inv_right (monoidOf S).map_units _ _ _).2 <| by
       rw [← mk_one_eq_monoidOf_mk, ← mk_one_eq_monoidOf_mk, mk_mul x y y 1, mul_comm y 1]
-      conv => rhs ; rw [← mul_one 1] ; rw [← mul_one x]
+      conv => rhs; rw [← mul_one 1]; rw [← mul_one x]
       exact mk_eq_mk_iff.2 (Con.symm _ <| (Localization.r S).mul (Con.refl _ (x, 1)) <| one_rel _)
 #align localization.mk_eq_monoid_of_mk'_apply Localization.mk_eq_monoidOf_mk'_apply
 #align add_localization.mk_eq_add_monoid_of_mk'_apply AddLocalization.mk_eq_addMonoidOf_mk'_apply
@@ -1700,7 +1700,7 @@ theorem mulEquivOfQuotient_mk' (x y) : mulEquivOfQuotient f ((monoidOf S).mk' x
 
 @[to_additive]
 theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y := by
-  rw [mk_eq_monoidOf_mk'_apply] ; exact mulEquivOfQuotient_mk' _ _
+  rw [mk_eq_monoidOf_mk'_apply]; exact mulEquivOfQuotient_mk' _ _
 #align localization.mul_equiv_of_quotient_mk Localization.mulEquivOfQuotient_mk
 #align add_localization.add_equiv_of_quotient_mk AddLocalization.addEquivOfQuotient_mk
 
@@ -1720,7 +1720,7 @@ theorem mulEquivOfQuotient_symm_mk' (x y) :
 
 @[to_additive]
 theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x y) = mk x y := by
-  rw [mk_eq_monoidOf_mk'_apply] ; exact mulEquivOfQuotient_symm_mk' _ _
+  rw [mk_eq_monoidOf_mk'_apply]; exact mulEquivOfQuotient_symm_mk' _ _
 #align localization.mul_equiv_of_quotient_symm_mk Localization.mulEquivOfQuotient_symm_mk
 #align add_localization.add_equiv_of_quotient_symm_mk AddLocalization.addEquivOfQuotient_symm_mk
 
@@ -1973,7 +1973,7 @@ instance partialOrder : PartialOrder (Localization s) where
     induction' b using Localization.rec with b₁ b₂
     simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists]
     exact fun hab hba => ⟨1, by rw [hab.antisymm hba]⟩
-    all_goals intros ; rfl
+    all_goals intros; rfl
   lt_iff_le_not_le a b := Localization.induction_on₂ a b fun a b => lt_iff_le_not_le
 
 @[to_additive]
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊢ -> some_tactic at h ⊢
  • some_tactic at h -> some_tactic at h
Diff
@@ -1962,7 +1962,7 @@ instance partialOrder : PartialOrder (Localization s) where
   le_refl a := Localization.induction_on a fun a => le_rfl
   le_trans a b c :=
     Localization.induction_on₃ a b c fun a b c hab hbc => by
-      simp only [mk_le_mk] at hab hbc⊢
+      simp only [mk_le_mk] at hab hbc ⊢
       refine' le_of_mul_le_mul_left' _
       · exact ↑b.2
       rw [mul_left_comm]
@@ -1983,11 +1983,11 @@ instance orderedCancelCommMonoid : OrderedCancelCommMonoid (Localization s) :=
     mul_le_mul_left := fun a b =>
       Localization.induction_on₂ a b fun a b hab c =>
         Localization.induction_on c fun c => by
-          simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ c.1] at hab⊢
+          simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ c.1] at hab ⊢
           exact mul_le_mul_left' hab _
     le_of_mul_le_mul_left := fun a b c =>
       Localization.induction_on₃ a b c fun a b c hab => by
-        simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab⊢
+        simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab ⊢
         exact le_of_mul_le_mul_left' hab }
 
 @[to_additive]
chore: fix grammar 2/3 (#5002)

Part 2 of #5001

Diff
@@ -1124,7 +1124,7 @@ Localization of `P` at `T`: if `f : M →* N` and `k : P →* Q` are Localizatio
 `T` respectively, we send `z : N` to `k (g x) * (k (g y))⁻¹`, where `(x, y) : M × S` are such
 that `z = f x * (f y)⁻¹`. -/
 @[to_additive
-    "Given a `AddCommMonoid` homomorphism `g : M →+ P` where for Submonoids `S ⊆ M, T ⊆ P` we have
+    "Given an `AddCommMonoid` homomorphism `g : M →+ P` where for Submonoids `S ⊆ M, T ⊆ P` we have
 `g(S) ⊆ T`, the induced AddMonoid homomorphism from the Localization of `M` at `S` to the
 Localization of `P` at `T`: if `f : M →+ N` and `k : P →+ Q` are Localization maps for `S` and
 `T` respectively, we send `z : N` to `k (g x) - k (g y)`, where `(x, y) : M × S` are such
@@ -1359,7 +1359,7 @@ variable (f : S.LocalizationMap N) {g : M →* P} (hg : ∀ y : S, IsUnit (g y))
 /-- If `f : M →* N` and `k : M →* P` are Localization maps for a Submonoid `S`, we get an
 isomorphism of `N` and `P`. -/
 @[to_additive
-    "If `f : M →+ N` and `k : M →+ R` are Localization maps for a AddSubmonoid `S`, we get an
+    "If `f : M →+ N` and `k : M →+ R` are Localization maps for an AddSubmonoid `S`, we get an
 isomorphism of `N` and `R`."]
 noncomputable def mulEquivOfLocalizations (k : LocalizationMap S P) : N ≃* P :=
 { toFun := f.lift k.map_units
chore: formatting issues (#4947)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -616,7 +616,7 @@ theorem sec_spec' {f : LocalizationMap S N} (z : N) :
 @[to_additive
     "Given an AddMonoidHom `f : M →+ N` and Submonoid `S ⊆ M` such that
 `f(S) ⊆ AddUnits N`, for all `w, z : N` and `y ∈ S`, we have `w - f y = z ↔ w = f y + z`."]
-theorem mul_inv_left {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z : N):
+theorem mul_inv_left {f : M →* N} (h : ∀ y : S, IsUnit (f y)) (y : S) (w z : N) :
     w * (IsUnit.liftRight (f.restrict S) h y)⁻¹ = z ↔ w = f y * z := by
   rw [mul_comm]
   exact Units.inv_mul_eq_iff_eq_mul (IsUnit.liftRight (f.restrict S) h y)
@@ -733,7 +733,7 @@ theorem mk'_sec (z : N) : f.mk' (f.sec z).1 (f.sec z).2 = z :=
 #align add_submonoid.localization_map.mk'_sec AddSubmonoid.LocalizationMap.mk'_sec
 
 @[to_additive]
-theorem mk'_surjective (z : N) : ∃ (x : _)(y : S), f.mk' x y = z :=
+theorem mk'_surjective (z : N) : ∃ (x : _) (y : S), f.mk' x y = z :=
   ⟨(f.sec z).1, (f.sec z).2, f.mk'_sec z⟩
 #align submonoid.localization_map.mk'_surjective Submonoid.LocalizationMap.mk'_surjective
 #align add_submonoid.localization_map.mk'_surjective AddSubmonoid.LocalizationMap.mk'_surjective
chore: fix many typos (#4535)

Run codespell Mathlib and keep some suggestions.

Diff
@@ -349,7 +349,7 @@ theorem ndrec_mk {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk
 /-- Non-dependent recursion principle for localizations: given elements `f a b : p`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d`,
 then `f` is defined on the whole `Localization S`. -/
--- Porting note: the attibute `elab_as_elim` fails with `unexpected eliminator resulting type p`
+-- Porting note: the attribute `elab_as_elim` fails with `unexpected eliminator resulting type p`
 -- @[to_additive (attr := elab_as_elim)
 @[to_additive
     "Non-dependent recursion principle for `AddLocalization`s: given elements `f a b : p`
@@ -382,7 +382,7 @@ theorem induction_on {p : Localization S → Prop} (x) (H : ∀ y : M × S, p (m
 /-- Non-dependent recursion principle for localizations: given elements `f x y : p`
 for all `x` and `y`, such that `r S x x'` and `r S y y'` implies `f x y = f x' y'`,
 then `f` is defined on the whole `Localization S`. -/
--- Porting note: the attibute `elab_as_elim` fails with `unexpected eliminator resulting type p`
+-- Porting note: the attribute `elab_as_elim` fails with `unexpected eliminator resulting type p`
 -- @[to_additive (attr := elab_as_elim)
 @[to_additive
     "Non-dependent recursion principle for localizations: given elements `f x y : p`
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -26,13 +26,13 @@ monoid homomorphism `f : M →* N` satisfying 3 properties:
 3. For all `x, y : M`, `f x = f y` iff there exists `c ∈ S` such that `x * c = y * c`.
 
 Given such a localization map `f : M →* N`, we can define the surjection
-`LocalizationMap.mk'` sending `(x, y) : M × S` to `f x * (f y)⁻¹`, and
-`LocalizationMap.lift`, the homomorphism from `N` induced by a homomorphism from `M` which maps
-elements of `S` to invertible elements of the codomain. Similarly, given commutative monoids
+`Submonoid.LocalizationMap.mk'` sending `(x, y) : M × S` to `f x * (f y)⁻¹`, and
+`Submonoid.LocalizationMap.lift`, the homomorphism from `N` induced by a homomorphism from `M` which
+maps elements of `S` to invertible elements of the codomain. Similarly, given commutative monoids
 `P, Q`, a submonoid `T` of `P` and a localization map for `T` from `P` to `Q`, then a homomorphism
-`g : M →* P` such that `g(S) ⊆ T` induces a homomorphism of localizations,
-`LocalizationMap.map`, from `N` to `Q`.
-We treat the special case of localizing away from an element in the sections `AwayMap` and `Away`.
+`g : M →* P` such that `g(S) ⊆ T` induces a homomorphism of localizations, `LocalizationMap.map`,
+from `N` to `Q`.  We treat the special case of localizing away from an element in the sections
+`AwayMap` and `Away`.
 
 We also define the quotient of `M × S` by the unique congruence relation (equivalence relation
 preserving a binary operation) `r` such that for any other congruence relation `s` on `M × S`
@@ -61,16 +61,16 @@ this structure.
 To reason about the localization as a quotient type, use `mk_eq_monoidOf_mk'` and associated
 lemmas. These show the quotient map `mk : M → S → Localization S` equals the
 surjection `LocalizationMap.mk'` induced by the map
-`monoid_of : localization_map S (localization S)` (where `of` establishes the
+`Localization.monoidOf : Submonoid.LocalizationMap S (Localization S)` (where `of` establishes the
 localization as a quotient type satisfies the characteristic predicate). The lemma
-`mk_eq_monoidOf_mk'` hence gives you access to the results in the rest of the file, which are
-about the `LocalizationMap.mk'` induced by any localization map.
+`mk_eq_monoidOf_mk'` hence gives you access to the results in the rest of the file, which are about
+the `LocalizationMap.mk'` induced by any localization map.
 
 ## TODO
 
 * Show that the localization at the top monoid is a group.
 * Generalise to (nonempty) subsemigroups.
-* If we acquire more bundlings, we can make `localization.mk_order_embedding` be an ordered monoid
+* If we acquire more bundlings, we can make `Localization.mkOrderEmbedding` be an ordered monoid
   embedding.
 
 ## Tags
@@ -1311,7 +1311,7 @@ noncomputable def AwayMap.negSelf : B :=
   F.mk' 0 ⟨x, mem_multiples _⟩
 #align add_submonoid.localization_map.away_map.neg_self AddSubmonoid.LocalizationMap.AwayMap.negSelf
 
-/-- Given `x : A`, a localization map `F : A →+ B` away from `x`, and a map of `add_comm_monoid`s
+/-- Given `x : A`, a localization map `F : A →+ B` away from `x`, and a map of `AddCommMonoid`s
 `g : A →+ C` such that `g x` is invertible, the homomorphism induced from `B` to `C` sending
 `z : B` to `g y - n • g x`, where `y : A, n : ℕ` are such that `z = F y - n • F x`. -/
 noncomputable def AwayMap.lift (hg : IsAddUnit (g x)) : B →+ C :=
@@ -1892,7 +1892,7 @@ theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
 
 @[to_additive]
 theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
-  -- porting note: times out unless we add this `have`. Even `infer_instance` times out here.
+  -- porting note: times out unless we add this `have`. Even `inferInstance` times out here.
   have : Nonempty s := One.nonempty
   simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
 #align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'
fix: correct names of LinearOrder decidable fields (#4006)

This renames

  • decidable_eq to decidableEq
  • decidable_lt to decidableLT
  • decidable_le to decidableLE
  • decidableLT_of_decidableLE to decidableLTOfDecidableLE
  • decidableEq_of_decidableLE to decidableEqOfDecidableLE

These fields are data not proofs, so they should be lowerCamelCased.

Diff
@@ -2024,8 +2024,8 @@ instance [LinearOrderedCancelCommMonoid α] {s : Submonoid α} :
       Localization.induction_on₂ a b fun _ _ => by
         simp_rw [mk_le_mk]
         exact le_total _ _
-    decidable_le := Localization.decidableLE
-    decidable_lt := Localization.decidableLT  -- porting note: was wrong in mathlib3
-    decidable_eq := Localization.decidableEq }
+    decidableLE := Localization.decidableLE
+    decidableLT := Localization.decidableLT  -- porting note: was wrong in mathlib3
+    decidableEq := Localization.decidableEq }
 
 end Localization
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

  • supₛsSup
  • infₛsInf
  • supᵢiSup
  • infᵢiInf
  • bsupₛbsSup
  • binfₛbsInf
  • bsupᵢbiSup
  • binfᵢbiInf
  • csupₛcsSup
  • cinfₛcsInf
  • csupᵢciSup
  • cinfᵢciInf
  • unionₛsUnion
  • interₛsInter
  • unionᵢiUnion
  • interᵢiInter
  • bunionₛbsUnion
  • binterₛbsInter
  • bunionᵢbiUnion
  • binterᵢbiInter

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -151,7 +151,7 @@ whose quotient is the localization of `M` at `S`, defined as the unique congruen
 `(0, 0) ∼ (y, y)` under `s`, we have that `(x₁, y₁) ∼ (x₂, y₂)` by `r` implies
 `(x₁, y₁) ∼ (x₂, y₂)` by `s`."]
 def r (S : Submonoid M) : Con (M × S) :=
-  infₛ { c | ∀ y : S, c 1 (y, y) }
+  sInf { c | ∀ y : S, c 1 (y, y) }
 #align localization.r Localization.r
 #align add_localization.r AddLocalization.r
 
@@ -189,8 +189,8 @@ equivalently as an infimum (see `Localization.r`) or explicitly
 expressed equivalently as an infimum (see `AddLocalization.r`) or explicitly
 (see `AddLocalization.r'`)."]
 theorem r_eq_r' : r S = r' S :=
-  le_antisymm (infₛ_le fun _ ↦ ⟨1, by simp⟩) <|
-    le_infₛ fun b H ⟨p, q⟩ ⟨x, y⟩ ⟨t, ht⟩ ↦ by
+  le_antisymm (sInf_le fun _ ↦ ⟨1, by simp⟩) <|
+    le_sInf fun b H ⟨p, q⟩ ⟨x, y⟩ ⟨t, ht⟩ ↦ by
       rw [← one_mul (p, q), ← one_mul (x, y)]
       refine b.trans (b.mul (H (t * y)) (b.refl _)) ?_
       convert b.symm (b.mul (H (t * q)) (b.refl (x, y))) using 1
chore: bye-bye, solo bys! (#3825)

This PR puts, with one exception, every single remaining by that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh. The exception is when the by begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.

Essentially this is s/\n *by$/ by/g, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated bys".

Diff
@@ -1212,8 +1212,8 @@ of the induced maps equals the map of localizations induced by `l ∘ g`. -/
 of the induced maps equals the map of localizations induced by `l ∘ g`."]
 theorem map_comp_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMonoid R]
     (j : LocalizationMap U R) {l : P →* A} (hl : ∀ w : T, l w ∈ U) :
-    (k.map hl j).comp (f.map hy k) = f.map (fun x ↦ show l.comp g x ∈ U from hl ⟨g x, hy x⟩) j :=
-  by
+    (k.map hl j).comp (f.map hy k) =
+    f.map (fun x ↦ show l.comp g x ∈ U from hl ⟨g x, hy x⟩) j := by
   ext z
   show j.toMap _ * _ = j.toMap (l _) * _
   rw [mul_inv_left, ← mul_assoc, mul_inv_right]
@@ -1643,11 +1643,10 @@ theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x := rfl
 @[to_additive]
 theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
   show _ = _ * _ from
-    (Submonoid.LocalizationMap.mul_inv_right (monoidOf S).map_units _ _ _).2 <|
-      by
-        rw [← mk_one_eq_monoidOf_mk, ← mk_one_eq_monoidOf_mk, mk_mul x y y 1, mul_comm y 1]
-        conv => rhs ; rw [← mul_one 1] ; rw [← mul_one x]
-        exact mk_eq_mk_iff.2 (Con.symm _ <| (Localization.r S).mul (Con.refl _ (x, 1)) <| one_rel _)
+    (Submonoid.LocalizationMap.mul_inv_right (monoidOf S).map_units _ _ _).2 <| by
+      rw [← mk_one_eq_monoidOf_mk, ← mk_one_eq_monoidOf_mk, mk_mul x y y 1, mul_comm y 1]
+      conv => rhs ; rw [← mul_one 1] ; rw [← mul_one x]
+      exact mk_eq_mk_iff.2 (Con.symm _ <| (Localization.r S).mul (Con.refl _ (x, 1)) <| one_rel _)
 #align localization.mk_eq_monoid_of_mk'_apply Localization.mk_eq_monoidOf_mk'_apply
 #align add_localization.mk_eq_add_monoid_of_mk'_apply AddLocalization.mk_eq_addMonoidOf_mk'_apply
 
chore: tidy various files (#3718)
Diff
@@ -1238,7 +1238,7 @@ theorem map_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMonoid R]
 -- explicit one
 --  rw [← f.map_comp_map hy j hl]
   rw [← @map_comp_map M _ S N _ P _ f g T hy Q _ k A _ U R _ j l hl]
-  rfl
+  simp only [MonoidHom.coe_comp, comp_apply]
 #align submonoid.localization_map.map_map Submonoid.LocalizationMap.map_map
 #align add_submonoid.localization_map.map_map AddSubmonoid.LocalizationMap.map_map
 
@@ -1250,7 +1250,7 @@ variable (x : M)
 is isomorphic to the Localization of `M` at the Submonoid generated by `x`. -/
 @[to_additive (attr := reducible)
     "Given `x : M`, the type of `AddCommMonoid` homomorphisms `f : M →+ N` such that `N`
-is isomorphic to the localization of `M` at the Submonoid generated by `x`."]
+is isomorphic to the localization of `M` at the AddSubmonoid generated by `x`."]
 def AwayMap (N' : Type _) [CommMonoid N'] := LocalizationMap (powers x) N'
 #align submonoid.localization_map.away_map Submonoid.LocalizationMap.AwayMap
 #align add_submonoid.localization_map.away_map AddSubmonoid.LocalizationMap.AwayMap
@@ -1359,7 +1359,7 @@ variable (f : S.LocalizationMap N) {g : M →* P} (hg : ∀ y : S, IsUnit (g y))
 /-- If `f : M →* N` and `k : M →* P` are Localization maps for a Submonoid `S`, we get an
 isomorphism of `N` and `P`. -/
 @[to_additive
-    "If `f : M →+ N` and `k : M →+ R` are Localization maps for a Submonoid `S`, we get an
+    "If `f : M →+ N` and `k : M →+ R` are Localization maps for a AddSubmonoid `S`, we get an
 isomorphism of `N` and `R`."]
 noncomputable def mulEquivOfLocalizations (k : LocalizationMap S P) : N ≃* P :=
 { toFun := f.lift k.map_units
@@ -1480,9 +1480,9 @@ theorem ofMulEquivOfLocalizations_comp {k : N ≃* P} {j : P ≃* Q} :
 map for `S` and `k : P ≃* M` is an isomorphism of `CommMonoid`s such that `k(T) = S`, `f ∘ k`
 is a Localization map for `T`. -/
 @[to_additive
-    "Given `CommMonoid`s `M, P` and Submonoids `S ⊆ M, T ⊆ P`, if `f : M →* N` is a Localization
-map for `S` and `k : P ≃* M` is an isomorphism of `CommMonoid`s such that `k(T) = S`, `f ∘ k`
-is a Localization map for `T`."]
+    "Given `AddCommMonoid`s `M, P` and `AddSubmonoid`s `S ⊆ M, T ⊆ P`, if `f : M →* N` is a
+    Localization map for `S` and `k : P ≃+ M` is an isomorphism of `AddCommMonoid`s such that
+    `k(T) = S`, `f ∘ k` is a Localization map for `T`."]
 def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationMap T N :=
   let H' : S.comap k.toMonoidHom = T :=
     H ▸ (SetLike.coe_injective <| T.1.1.preimage_image_eq k.toEquiv.injective)
@@ -1809,7 +1809,7 @@ attribute [nolint docBlame] LocalizationWithZeroMap.toLocalizationMap
 
 variable {S N}
 
-/-- The monoid with zero hom underlying a `localization_map`. -/
+/-- The monoid with zero hom underlying a `LocalizationMap`. -/
 def LocalizationWithZeroMap.toMonoidWithZeroHom (f : LocalizationWithZeroMap S N) : M →*₀ N :=
   { f with }
 #align submonoid.localization_with_zero_map.to_monoid_with_zero_hom Submonoid.LocalizationWithZeroMap.toMonoidWithZeroHom
@@ -1859,7 +1859,7 @@ theorem LocalizationMap.sec_zero_fst {f : LocalizationMap S N} : f.toMap (f.sec
 namespace LocalizationWithZeroMap
 
 /-- Given a Localization map `f : M →*₀ N` for a Submonoid `S ⊆ M` and a map of
-`comm_monoid_with_zero`s `g : M →*₀ P` such that `g y` is invertible for all `y : S`, the
+`CommMonoidWithZero`s `g : M →*₀ P` such that `g y` is invertible for all `y : S`, the
 homomorphism induced from `N` to `P` sending `z : N` to `g x * (g y)⁻¹`, where `(x, y) : M × S`
 are such that `z = f x * (f y)⁻¹`. -/
 noncomputable def lift (f : LocalizationWithZeroMap S N) (g : M →*₀ P)
@@ -1992,18 +1992,18 @@ instance orderedCancelCommMonoid : OrderedCancelCommMonoid (Localization s) :=
         exact le_of_mul_le_mul_left' hab }
 
 @[to_additive]
-instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
+instance decidableLE [DecidableRel ((· ≤ ·) : α → α → Prop)] :
     DecidableRel ((· ≤ ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun _ _ _ _ => decidable_of_iff' _ mk_le_mk
-#align localization.decidable_le Localization.decidableLe
-#align add_localization.decidable_le AddLocalization.decidableLe
+#align localization.decidable_le Localization.decidableLE
+#align add_localization.decidable_le AddLocalization.decidableLE
 
 @[to_additive]
-instance decidableLt [DecidableRel ((· < ·) : α → α → Prop)] :
+instance decidableLT [DecidableRel ((· < ·) : α → α → Prop)] :
     DecidableRel ((· < ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun _ _ _ _ => decidable_of_iff' _ mk_lt_mk
-#align localization.decidable_lt Localization.decidableLt
-#align add_localization.decidable_lt AddLocalization.decidableLt
+#align localization.decidable_lt Localization.decidableLT
+#align add_localization.decidable_lt AddLocalization.decidableLT
 
 /-- An ordered cancellative monoid injects into its localization by sending `a` to `a / b`. -/
 @[to_additive (attr := simps!) "An ordered cancellative monoid injects into its localization by
@@ -2025,8 +2025,8 @@ instance [LinearOrderedCancelCommMonoid α] {s : Submonoid α} :
       Localization.induction_on₂ a b fun _ _ => by
         simp_rw [mk_le_mk]
         exact le_total _ _
-    decidable_le := Localization.decidableLe
-    decidable_lt := Localization.decidableLt  -- porting note: was wrong in mathlib3
+    decidable_le := Localization.decidableLE
+    decidable_lt := Localization.decidableLT  -- porting note: was wrong in mathlib3
     decidable_eq := Localization.decidableEq }
 
 end Localization
Diff
@@ -945,7 +945,7 @@ induced from `N` to `P` maps `f x - f y` to `g x - g y` for all `x : M, y ∈ S`
 theorem lift_mk' (x y) : f.lift hg (f.mk' x y) = g x * (IsUnit.liftRight (g.restrict S) hg y)⁻¹ :=
   (mul_inv hg).2 <|
     f.eq_of_eq hg <| by
-      simp_rw [f.toMap.map_mul, f.toMap.map_mul, sec_spec', mul_assoc, f.mk'_spec, mul_comm]
+      simp_rw [f.toMap.map_mul, sec_spec', mul_assoc, f.mk'_spec, mul_comm]
 #align submonoid.localization_map.lift_mk' Submonoid.LocalizationMap.lift_mk'
 #align add_submonoid.localization_map.lift_mk' AddSubmonoid.LocalizationMap.lift_mk'
 
chore: Rename to AddLocalization (#3714)

This name wasn't properly capitalised.

Diff
@@ -136,15 +136,15 @@ end Submonoid
 namespace Localization
 
 -- Porting note: this does not work so it is done explicitly instead
--- run_cmd to_additive.map_namespace `Localization `addLocalization
--- run_cmd Elab.Command.liftCoreM <| ToAdditive.insertTranslation `Localization `addLocalization
+-- run_cmd to_additive.map_namespace `Localization `AddLocalization
+-- run_cmd Elab.Command.liftCoreM <| ToAdditive.insertTranslation `Localization `AddLocalization
 
 /-- The congruence relation on `M × S`, `M` a `CommMonoid` and `S` a submonoid of `M`, whose
 quotient is the localization of `M` at `S`, defined as the unique congruence relation on
 `M × S` such that for any other congruence relation `s` on `M × S` where for all `y ∈ S`,
 `(1, 1) ∼ (y, y)` under `s`, we have that `(x₁, y₁) ∼ (x₂, y₂)` by `r` implies
 `(x₁, y₁) ∼ (x₂, y₂)` by `s`. -/
-@[to_additive addLocalization.r
+@[to_additive AddLocalization.r
     "The congruence relation on `M × S`, `M` an `AddCommMonoid` and `S` an `add_submonoid` of `M`,
 whose quotient is the localization of `M` at `S`, defined as the unique congruence relation on
 `M × S` such that for any other congruence relation `s` on `M × S` where for all `y ∈ S`,
@@ -153,11 +153,11 @@ whose quotient is the localization of `M` at `S`, defined as the unique congruen
 def r (S : Submonoid M) : Con (M × S) :=
   infₛ { c | ∀ y : S, c 1 (y, y) }
 #align localization.r Localization.r
-#align add_localization.r addLocalization.r
+#align add_localization.r AddLocalization.r
 
 /-- An alternate form of the congruence relation on `M × S`, `M` a `CommMonoid` and `S` a
 submonoid of `M`, whose quotient is the localization of `M` at `S`. -/
-@[to_additive addLocalization.r'
+@[to_additive AddLocalization.r'
     "An alternate form of the congruence relation on `M × S`, `M` a `CommMonoid` and `S` a
 submonoid of `M`, whose quotient is the localization of `M` at `S`."]
 def r' : Con (M × S) := by
@@ -179,15 +179,15 @@ def r' : Con (M × S) := by
       (t₂ * t₁ : M) * (b.2 * d.2 * (a.1 * c.1)) = t₂ * (d.2 * c.1) * (t₁ * (b.2 * a.1)) := by ac_rfl
       _ = (t₂ * t₁ : M) * (a.2 * c.2 * (b.1 * d.1)) := by rw [ht₁, ht₂] ; ac_rfl
 #align localization.r' Localization.r'
-#align add_localization.r' addLocalization.r'
+#align add_localization.r' AddLocalization.r'
 
 /-- The congruence relation used to localize a `CommMonoid` at a submonoid can be expressed
 equivalently as an infimum (see `Localization.r`) or explicitly
 (see `Localization.r'`). -/
-@[to_additive addLocalization.r_eq_r'
+@[to_additive AddLocalization.r_eq_r'
     "The additive congruence relation used to localize an `AddCommMonoid` at a submonoid can be
-expressed equivalently as an infimum (see `addLocalization.r`) or explicitly
-(see `addLocalization.r'`)."]
+expressed equivalently as an infimum (see `AddLocalization.r`) or explicitly
+(see `AddLocalization.r'`)."]
 theorem r_eq_r' : r S = r' S :=
   le_antisymm (infₛ_le fun _ ↦ ⟨1, by simp⟩) <|
     le_infₛ fun b H ⟨p, q⟩ ⟨x, y⟩ ⟨t, ht⟩ ↦ by
@@ -197,52 +197,52 @@ theorem r_eq_r' : r S = r' S :=
       dsimp only [Prod.mk_mul_mk, Submonoid.coe_mul] at ht ⊢
       simp_rw [mul_assoc, ht, mul_comm y q]
 #align localization.r_eq_r' Localization.r_eq_r'
-#align add_localization.r_eq_r' addLocalization.r_eq_r'
+#align add_localization.r_eq_r' AddLocalization.r_eq_r'
 
 variable {S}
 
-@[to_additive addLocalization.r_iff_exists]
+@[to_additive AddLocalization.r_iff_exists]
 theorem r_iff_exists {x y : M × S} : r S x y ↔ ∃ c : S, ↑c * (↑y.2 * x.1) = c * (x.2 * y.1) := by
   rw [r_eq_r' S] ; rfl
 #align localization.r_iff_exists Localization.r_iff_exists
-#align add_localization.r_iff_exists addLocalization.r_iff_exists
+#align add_localization.r_iff_exists AddLocalization.r_iff_exists
 
 end Localization
 
 /-- The localization of a `CommMonoid` at one of its submonoids (as a quotient type). -/
-@[to_additive addLocalization
+@[to_additive AddLocalization
     "The localization of an `AddCommMonoid` at one of its submonoids (as a quotient type)."]
 def Localization := (Localization.r S).Quotient
 #align localization Localization
-#align add_localization addLocalization
+#align add_localization AddLocalization
 
 namespace Localization
 
 @[to_additive]
 instance inhabited : Inhabited (Localization S) := Con.Quotient.inhabited
 #align localization.inhabited Localization.inhabited
-#align add_localization.inhabited addLocalization.inhabited
+#align add_localization.inhabited AddLocalization.inhabited
 
 /-- Multiplication in a `Localization` is defined as `⟨a, b⟩ * ⟨c, d⟩ = ⟨a * c, b * d⟩`. -/
-@[to_additive "Addition in an `addLocalization` is defined as `⟨a, b⟩ + ⟨c, d⟩ = ⟨a + c, b + d⟩`.
+@[to_additive "Addition in an `AddLocalization` is defined as `⟨a, b⟩ + ⟨c, d⟩ = ⟨a + c, b + d⟩`.
 Should not be confused with the ring localization counterpart `Localization.add`, which maps
 `⟨a, b⟩ + ⟨c, d⟩` to `⟨d * a + b * c, b * d⟩`."]
 protected irreducible_def mul : Localization S → Localization S → Localization S :=
   (r S).commMonoid.mul
 #align localization.mul Localization.mul
-#align add_localization.add addLocalization.add
+#align add_localization.add AddLocalization.add
 
 @[to_additive]
 instance : Mul (Localization S) := ⟨Localization.mul S⟩
 
 /-- The identity element of a `Localization` is defined as `⟨1, 1⟩`. -/
-@[to_additive "The identity element of an `addLocalization` is defined as `⟨0, 0⟩`.
+@[to_additive "The identity element of an `AddLocalization` is defined as `⟨0, 0⟩`.
 
 Should not be confused with the ring localization counterpart `Localization.zero`,
 which is defined as `⟨0, 1⟩`."]
 protected irreducible_def one : Localization S := (r S).commMonoid.one
 #align localization.one Localization.one
-#align add_localization.zero addLocalization.zero
+#align add_localization.zero AddLocalization.zero
 
 @[to_additive]
 instance : One (Localization S) := ⟨Localization.one S⟩
@@ -259,7 +259,7 @@ This is a separate `irreducible` def to ensure the elaborator doesn't waste its
 trying to unify some huge recursive definition with itself, but unfolded one step less."]
 protected irreducible_def npow : ℕ → Localization S → Localization S := (r S).commMonoid.npow
 #align localization.npow Localization.npow
-#align add_localization.nsmul addLocalization.nsmul
+#align add_localization.nsmul AddLocalization.nsmul
 
 @[to_additive]
 instance commMonoid : CommMonoid (Localization S) where
@@ -288,12 +288,12 @@ class of `(x, y)` in the localization of `M` at `S`. -/
 the equivalence class of `(x, y)` in the localization of `M` at `S`."]
 def mk (x : M) (y : S) : Localization S := (r S).mk' (x, y)
 #align localization.mk Localization.mk
-#align add_localization.mk addLocalization.mk
+#align add_localization.mk AddLocalization.mk
 
 @[to_additive]
 theorem mk_eq_mk_iff {a c : M} {b d : S} : mk a b = mk c d ↔ r S ⟨a, b⟩ ⟨c, d⟩ := (r S).eq
 #align localization.mk_eq_mk_iff Localization.mk_eq_mk_iff
-#align add_localization.mk_eq_mk_iff addLocalization.mk_eq_mk_iff
+#align add_localization.mk_eq_mk_iff AddLocalization.mk_eq_mk_iff
 
 universe u
 
@@ -301,50 +301,50 @@ universe u
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (with the correct coercions),
 then `f` is defined on the whole `Localization S`. -/
 @[to_additive (attr := elab_as_elim)
-    "Dependent recursion principle for `addLocalizations`: given elements `f a b : p (mk a b)`
+    "Dependent recursion principle for `AddLocalizations`: given elements `f a b : p (mk a b)`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d` (with the correct coercions),
-then `f` is defined on the whole `addLocalization S`."]
+then `f` is defined on the whole `AddLocalization S`."]
 def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
     (H : ∀ {a c : M} {b d : S} (h : r S (a, b) (c, d)),
       (Eq.ndrec (f a b) (mk_eq_mk_iff.mpr h) : p (mk c d)) = f c d) (x) : p x :=
   Quot.rec (fun y ↦ Eq.ndrec (f y.1 y.2) (by rfl)) (fun y z h ↦ by cases y ; cases z ; exact H h) x
 #align localization.rec Localization.rec
-#align add_localization.rec addLocalization.rec
+#align add_localization.rec AddLocalization.rec
 
 /-- Copy of `Quotient.recOnSubsingleton₂` for `Localization` -/
-@[to_additive (attr := elab_as_elim) "Copy of `Quotient.recOnSubsingleton₂` for `addLocalization`"]
+@[to_additive (attr := elab_as_elim) "Copy of `Quotient.recOnSubsingleton₂` for `AddLocalization`"]
 def recOnSubsingleton₂ {r : Localization S → Localization S → Sort u}
     [h : ∀ (a c : M) (b d : S), Subsingleton (r (mk a b) (mk c d))] (x y : Localization S)
     (f : ∀ (a c : M) (b d : S), r (mk a b) (mk c d)) : r x y :=
   @Quotient.recOnSubsingleton₂' _ _ _ _ r (Prod.rec fun _ _ => Prod.rec fun _ _ => h _ _ _ _) x y
     (Prod.rec fun _ _ => Prod.rec fun _ _ => f _ _ _ _)
 #align localization.rec_on_subsingleton₂ Localization.recOnSubsingleton₂
-#align add_localization.rec_on_subsingleton₂ addLocalization.recOnSubsingleton₂
+#align add_localization.rec_on_subsingleton₂ AddLocalization.recOnSubsingleton₂
 
 @[to_additive]
 theorem mk_mul (a c : M) (b d : S) : mk a b * mk c d = mk (a * c) (b * d) :=
   show Localization.mul S _ _ = _ by rw [Localization.mul]; rfl
 #align localization.mk_mul Localization.mk_mul
-#align add_localization.mk_add addLocalization.mk_add
+#align add_localization.mk_add AddLocalization.mk_add
 
 @[to_additive]
 theorem mk_one : mk 1 (1 : S) = 1 :=
   show mk _ _ = .one S by rw [Localization.one]; rfl
 #align localization.mk_one Localization.mk_one
-#align add_localization.mk_zero addLocalization.mk_zero
+#align add_localization.mk_zero AddLocalization.mk_zero
 
 @[to_additive]
 theorem mk_pow (n : ℕ) (a : M) (b : S) : mk a b ^ n = mk (a ^ n) (b ^ n) :=
   show Localization.npow S _ _ = _ by rw [Localization.npow]; rfl
 #align localization.mk_pow Localization.mk_pow
-#align add_localization.mk_nsmul addLocalization.mk_nsmul
+#align add_localization.mk_nsmul AddLocalization.mk_nsmul
 
 -- Porting note: mathport translated `rec` to `ndrec` in the name of this lemma
 @[to_additive (attr := simp)]
 theorem ndrec_mk {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b)) (H) (a : M)
     (b : S) : (rec f H (mk a b) : p (mk a b)) = f a b := rfl
 #align localization.rec_mk Localization.ndrec_mk
-#align add_localization.rec_mk addLocalization.ndrec_mk
+#align add_localization.rec_mk AddLocalization.ndrec_mk
 
 /-- Non-dependent recursion principle for localizations: given elements `f a b : p`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d`,
@@ -352,32 +352,32 @@ then `f` is defined on the whole `Localization S`. -/
 -- Porting note: the attibute `elab_as_elim` fails with `unexpected eliminator resulting type p`
 -- @[to_additive (attr := elab_as_elim)
 @[to_additive
-    "Non-dependent recursion principle for `addLocalization`s: given elements `f a b : p`
+    "Non-dependent recursion principle for `AddLocalization`s: given elements `f a b : p`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d`,
 then `f` is defined on the whole `Localization S`."]
 def liftOn {p : Sort u} (x : Localization S) (f : M → S → p)
     (H : ∀ {a c : M} {b d : S} (_ : r S (a, b) (c, d)), f a b = f c d) : p :=
   rec f (fun h ↦ (by simpa only [eq_rec_constant] using H h)) x
 #align localization.lift_on Localization.liftOn
-#align add_localization.lift_on addLocalization.liftOn
+#align add_localization.lift_on AddLocalization.liftOn
 
 @[to_additive]
 theorem liftOn_mk {p : Sort u} (f : ∀ (_a : M) (_b : S), p) (H) (a : M) (b : S) :
     liftOn (mk a b) f H = f a b := rfl
 #align localization.lift_on_mk Localization.liftOn_mk
-#align add_localization.lift_on_mk addLocalization.liftOn_mk
+#align add_localization.lift_on_mk AddLocalization.liftOn_mk
 
 @[to_additive (attr := elab_as_elim)]
 theorem ind {p : Localization S → Prop} (H : ∀ y : M × S, p (mk y.1 y.2)) (x) : p x :=
   rec (fun a b ↦ H (a, b)) (fun _ ↦ rfl) x
 #align localization.ind Localization.ind
-#align add_localization.ind addLocalization.ind
+#align add_localization.ind AddLocalization.ind
 
 @[to_additive (attr := elab_as_elim)]
 theorem induction_on {p : Localization S → Prop} (x) (H : ∀ y : M × S, p (mk y.1 y.2)) : p x :=
   ind H x
 #align localization.induction_on Localization.induction_on
-#align add_localization.induction_on addLocalization.induction_on
+#align add_localization.induction_on AddLocalization.induction_on
 
 /-- Non-dependent recursion principle for localizations: given elements `f x y : p`
 for all `x` and `y`, such that `r S x x'` and `r S y y'` implies `f x y = f x' y'`,
@@ -394,38 +394,38 @@ def liftOn₂ {p : Sort u} (x y : Localization S) (f : M → S → M → S → p
   liftOn x (fun a b ↦ liftOn y (f a b) fun hy ↦ H ((r S).refl _) hy) fun hx ↦
     induction_on y fun ⟨_, _⟩ ↦ H hx ((r S).refl _)
 #align localization.lift_on₂ Localization.liftOn₂
-#align add_localization.lift_on₂ addLocalization.liftOn₂
+#align add_localization.lift_on₂ AddLocalization.liftOn₂
 
 @[to_additive]
 theorem liftOn₂_mk {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
     liftOn₂ (mk a b) (mk c d) f H = f a b c d := rfl
 #align localization.lift_on₂_mk Localization.liftOn₂_mk
-#align add_localization.lift_on₂_mk addLocalization.liftOn₂_mk
+#align add_localization.lift_on₂_mk AddLocalization.liftOn₂_mk
 
 @[to_additive (attr := elab_as_elim)]
 theorem induction_on₂ {p : Localization S → Localization S → Prop} (x y)
     (H : ∀ x y : M × S, p (mk x.1 x.2) (mk y.1 y.2)) : p x y :=
   induction_on x fun x ↦ induction_on y <| H x
 #align localization.induction_on₂ Localization.induction_on₂
-#align add_localization.induction_on₂ addLocalization.induction_on₂
+#align add_localization.induction_on₂ AddLocalization.induction_on₂
 
 @[to_additive (attr := elab_as_elim)]
 theorem induction_on₃ {p : Localization S → Localization S → Localization S → Prop} (x y z)
     (H : ∀ x y z : M × S, p (mk x.1 x.2) (mk y.1 y.2) (mk z.1 z.2)) : p x y z :=
   induction_on₂ x y fun x y ↦ induction_on z <| H x y
 #align localization.induction_on₃ Localization.induction_on₃
-#align add_localization.induction_on₃ addLocalization.induction_on₃
+#align add_localization.induction_on₃ AddLocalization.induction_on₃
 
 @[to_additive]
 theorem one_rel (y : S) : r S 1 (y, y) := fun _ hb ↦ hb y
 #align localization.one_rel Localization.one_rel
-#align add_localization.zero_rel addLocalization.zero_rel
+#align add_localization.zero_rel AddLocalization.zero_rel
 
 @[to_additive]
 theorem r_of_eq {x y : M × S} (h : ↑y.2 * x.1 = ↑x.2 * y.1) : r S x y :=
   r_iff_exists.2 ⟨1, by rw [h]⟩
 #align localization.r_of_eq Localization.r_of_eq
-#align add_localization.r_of_eq addLocalization.r_of_eq
+#align add_localization.r_of_eq AddLocalization.r_of_eq
 
 @[to_additive]
 theorem mk_self (a : S) : mk (a : M) a = 1 := by
@@ -433,7 +433,7 @@ theorem mk_self (a : S) : mk (a : M) a = 1 := by
   rw [← mk_one, mk_eq_mk_iff]
   exact one_rel a
 #align localization.mk_self Localization.mk_self
-#align add_localization.mk_self addLocalization.mk_self
+#align add_localization.mk_self AddLocalization.mk_self
 
 section Scalar
 
@@ -1631,14 +1631,14 @@ def monoidOf : Submonoid.LocalizationMap S (Localization S) :=
         r_iff_exists.trans <|
           show (∃ c : S, ↑c * (1 * x) = c * (1 * y)) ↔ _ by rw [one_mul, one_mul] }
 #align localization.monoid_of Localization.monoidOf
-#align add_localization.add_monoid_of addLocalization.addMonoidOf
+#align add_localization.add_monoid_of AddLocalization.addMonoidOf
 
 variable {S}
 
 @[to_additive]
 theorem mk_one_eq_monoidOf_mk (x) : mk x 1 = (monoidOf S).toMap x := rfl
 #align localization.mk_one_eq_monoid_of_mk Localization.mk_one_eq_monoidOf_mk
-#align add_localization.mk_zero_eq_add_monoid_of_mk addLocalization.mk_zero_eq_addMonoidOf_mk
+#align add_localization.mk_zero_eq_add_monoid_of_mk AddLocalization.mk_zero_eq_addMonoidOf_mk
 
 @[to_additive]
 theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
@@ -1649,13 +1649,13 @@ theorem mk_eq_monoidOf_mk'_apply (x y) : mk x y = (monoidOf S).mk' x y :=
         conv => rhs ; rw [← mul_one 1] ; rw [← mul_one x]
         exact mk_eq_mk_iff.2 (Con.symm _ <| (Localization.r S).mul (Con.refl _ (x, 1)) <| one_rel _)
 #align localization.mk_eq_monoid_of_mk'_apply Localization.mk_eq_monoidOf_mk'_apply
-#align add_localization.mk_eq_add_monoid_of_mk'_apply addLocalization.mk_eq_addMonoidOf_mk'_apply
+#align add_localization.mk_eq_add_monoid_of_mk'_apply AddLocalization.mk_eq_addMonoidOf_mk'_apply
 
 @[to_additive (attr := simp)]
 theorem mk_eq_monoidOf_mk' : mk = (monoidOf S).mk' :=
   funext fun _ ↦ funext fun _ ↦ mk_eq_monoidOf_mk'_apply _ _
 #align localization.mk_eq_monoid_of_mk' Localization.mk_eq_monoidOf_mk'
-#align add_localization.mk_eq_add_monoid_of_mk' addLocalization.mk_eq_addMonoidOf_mk'
+#align add_localization.mk_eq_add_monoid_of_mk' AddLocalization.mk_eq_addMonoidOf_mk'
 
 universe u
 
@@ -1663,14 +1663,14 @@ universe u
 theorem liftOn_mk' {p : Sort u} (f : ∀ (_ : M) (_ : S), p) (H) (a : M) (b : S) :
     liftOn ((monoidOf S).mk' a b) f H = f a b := by rw [← mk_eq_monoidOf_mk', liftOn_mk]
 #align localization.lift_on_mk' Localization.liftOn_mk'
-#align add_localization.lift_on_mk' addLocalization.liftOn_mk'
+#align add_localization.lift_on_mk' AddLocalization.liftOn_mk'
 
 @[to_additive (attr := simp)]
 theorem liftOn₂_mk' {p : Sort _} (f : M → S → M → S → p) (H) (a c : M) (b d : S) :
     liftOn₂ ((monoidOf S).mk' a b) ((monoidOf S).mk' c d) f H = f a b c d := by
   rw [← mk_eq_monoidOf_mk', liftOn₂_mk]
 #align localization.lift_on₂_mk' Localization.liftOn₂_mk'
-#align add_localization.lift_on₂_mk' addLocalization.liftOn₂_mk'
+#align add_localization.lift_on₂_mk' AddLocalization.liftOn₂_mk'
 
 variable (f : Submonoid.LocalizationMap S N)
 
@@ -1682,7 +1682,7 @@ the Localization of `M` at `S` as a quotient type and `N`."]
 noncomputable def mulEquivOfQuotient (f : Submonoid.LocalizationMap S N) : Localization S ≃* N :=
   (monoidOf S).mulEquivOfLocalizations f
 #align localization.mul_equiv_of_quotient Localization.mulEquivOfQuotient
-#align add_localization.add_equiv_of_quotient addLocalization.addEquivOfQuotient
+#align add_localization.add_equiv_of_quotient AddLocalization.addEquivOfQuotient
 
 variable {f}
 
@@ -1691,46 +1691,46 @@ variable {f}
 theorem mulEquivOfQuotient_apply (x) : mulEquivOfQuotient f x = (monoidOf S).lift f.map_units x :=
   rfl
 #align localization.mul_equiv_of_quotient_apply Localization.mulEquivOfQuotient_apply
-#align add_localization.add_equiv_of_quotient_apply addLocalization.addEquivOfQuotient_apply
+#align add_localization.add_equiv_of_quotient_apply AddLocalization.addEquivOfQuotient_apply
 
 @[to_additive (attr := simp, nolint simpNF)]
 theorem mulEquivOfQuotient_mk' (x y) : mulEquivOfQuotient f ((monoidOf S).mk' x y) = f.mk' x y :=
   (monoidOf S).lift_mk' _ _ _
 #align localization.mul_equiv_of_quotient_mk' Localization.mulEquivOfQuotient_mk'
-#align add_localization.add_equiv_of_quotient_mk' addLocalization.addEquivOfQuotient_mk'
+#align add_localization.add_equiv_of_quotient_mk' AddLocalization.addEquivOfQuotient_mk'
 
 @[to_additive]
 theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y := by
   rw [mk_eq_monoidOf_mk'_apply] ; exact mulEquivOfQuotient_mk' _ _
 #align localization.mul_equiv_of_quotient_mk Localization.mulEquivOfQuotient_mk
-#align add_localization.add_equiv_of_quotient_mk addLocalization.addEquivOfQuotient_mk
+#align add_localization.add_equiv_of_quotient_mk AddLocalization.addEquivOfQuotient_mk
 
 -- @[simp] -- Porting note: simp can prove this
 @[to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
   by simp
 #align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOf
-#align add_localization.add_equiv_of_quotient_add_monoid_of addLocalization.addEquivOfQuotient_addMonoidOf
+#align add_localization.add_equiv_of_quotient_add_monoid_of AddLocalization.addEquivOfQuotient_addMonoidOf
 
 @[to_additive (attr := simp)]
 theorem mulEquivOfQuotient_symm_mk' (x y) :
     (mulEquivOfQuotient f).symm (f.mk' x y) = (monoidOf S).mk' x y :=
   f.lift_mk' (monoidOf S).map_units _ _
 #align localization.mul_equiv_of_quotient_symm_mk' Localization.mulEquivOfQuotient_symm_mk'
-#align add_localization.add_equiv_of_quotient_symm_mk' addLocalization.addEquivOfQuotient_symm_mk'
+#align add_localization.add_equiv_of_quotient_symm_mk' AddLocalization.addEquivOfQuotient_symm_mk'
 
 @[to_additive]
 theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x y) = mk x y := by
   rw [mk_eq_monoidOf_mk'_apply] ; exact mulEquivOfQuotient_symm_mk' _ _
 #align localization.mul_equiv_of_quotient_symm_mk Localization.mulEquivOfQuotient_symm_mk
-#align add_localization.add_equiv_of_quotient_symm_mk addLocalization.addEquivOfQuotient_symm_mk
+#align add_localization.add_equiv_of_quotient_symm_mk AddLocalization.addEquivOfQuotient_symm_mk
 
 @[to_additive (attr := simp)]
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
     (mulEquivOfQuotient f).symm (f.toMap x) = (monoidOf S).toMap x :=
   f.lift_eq (monoidOf S).map_units _
 #align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOf
-#align add_localization.add_equiv_of_quotient_symm_add_monoid_of addLocalization.addEquivOfQuotient_symm_addMonoidOf
+#align add_localization.add_equiv_of_quotient_symm_add_monoid_of AddLocalization.addEquivOfQuotient_symm_addMonoidOf
 
 section Away
 
@@ -1742,7 +1742,7 @@ variable (x : M)
 def Away :=
   Localization (Submonoid.powers x)
 #align localization.away Localization.Away
-#align add_localization.away addLocalization.Away
+#align add_localization.away AddLocalization.Away
 
 /-- Given `x : M`, `invSelf` is `x⁻¹` in the Localization (as a quotient type) of `M` at the
 Submonoid generated by `x`. -/
@@ -1752,7 +1752,7 @@ Submonoid generated by `x`."]
 def Away.invSelf : Away x :=
   mk 1 ⟨x, Submonoid.mem_powers _⟩
 #align localization.away.inv_self Localization.Away.invSelf
-#align add_localization.away.neg_self addLocalization.Away.negSelf
+#align add_localization.away.neg_self AddLocalization.Away.negSelf
 
 /-- Given `x : M`, the natural hom sending `y : M`, `M` a `CommMonoid`, to the equivalence class
 of `(y, 1)` in the Localization of `M` at the Submonoid generated by `x`. -/
@@ -1762,13 +1762,13 @@ class of `(y, 0)` in the Localization of `M` at the Submonoid generated by `x`."
 def Away.monoidOf : Submonoid.LocalizationMap.AwayMap x (Away x) :=
   Localization.monoidOf (Submonoid.powers x)
 #align localization.away.monoid_of Localization.Away.monoidOf
-#align add_localization.away.add_monoid_of addLocalization.Away.addMonoidOf
+#align add_localization.away.add_monoid_of AddLocalization.Away.addMonoidOf
 
 -- @[simp] -- Porting note: simp can prove this
 @[to_additive]
 theorem Away.mk_eq_monoidOf_mk' : mk = (Away.monoidOf x).mk' := by simp
 #align localization.away.mk_eq_monoid_of_mk' Localization.Away.mk_eq_monoidOf_mk'
-#align add_localization.away.mk_eq_add_monoid_of_mk' addLocalization.Away.mk_eq_addMonoidOf_mk'
+#align add_localization.away.mk_eq_add_monoid_of_mk' AddLocalization.Away.mk_eq_addMonoidOf_mk'
 
 /-- Given `x : M` and a Localization map `f : M →* N` away from `x`, we get an isomorphism between
 the Localization of `M` at the Submonoid generated by `x` as a quotient type and `N`. -/
@@ -1779,7 +1779,7 @@ noncomputable def Away.mulEquivOfQuotient (f : Submonoid.LocalizationMap.AwayMap
     Away x ≃* N :=
   Localization.mulEquivOfQuotient f
 #align localization.away.mul_equiv_of_quotient Localization.Away.mulEquivOfQuotient
-#align add_localization.away.add_equiv_of_quotient addLocalization.Away.addEquivOfQuotient
+#align add_localization.away.add_equiv_of_quotient AddLocalization.Away.addEquivOfQuotient
 
 end Away
 
@@ -1889,7 +1889,7 @@ theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
   have : Nonempty s := One.nonempty
   simpa [-mk_eq_monoidOf_mk', mk_eq_mk_iff, r_iff_exists] using h
 #align localization.mk_left_injective Localization.mk_left_injective
-#align add_localization.mk_left_injective addLocalization.mk_left_injective
+#align add_localization.mk_left_injective AddLocalization.mk_left_injective
 
 @[to_additive]
 theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
@@ -1897,13 +1897,13 @@ theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ *
   have : Nonempty s := One.nonempty
   simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
 #align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'
-#align add_localization.mk_eq_mk_iff' addLocalization.mk_eq_mk_iff'
+#align add_localization.mk_eq_mk_iff' AddLocalization.mk_eq_mk_iff'
 
 @[to_additive]
 instance decidableEq [DecidableEq α] : DecidableEq (Localization s) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun _ _ _ _ => decidable_of_iff' _ mk_eq_mk_iff'
 #align localization.decidable_eq Localization.decidableEq
-#align add_localization.decidable_eq addLocalization.decidableEq
+#align add_localization.decidable_eq AddLocalization.decidableEq
 
 end Localization
 
@@ -1947,13 +1947,13 @@ instance lt : LT (Localization s) :=
 theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ :=
   Iff.rfl
 #align localization.mk_le_mk Localization.mk_le_mk
-#align add_localization.mk_le_mk addLocalization.mk_le_mk
+#align add_localization.mk_le_mk AddLocalization.mk_le_mk
 
 @[to_additive]
 theorem mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ :=
   Iff.rfl
 #align localization.mk_lt_mk Localization.mk_lt_mk
-#align add_localization.mk_lt_mk addLocalization.mk_lt_mk
+#align add_localization.mk_lt_mk AddLocalization.mk_lt_mk
 
 -- declaring this separately to the instance below makes things faster
 @[to_additive]
@@ -1996,14 +1996,14 @@ instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
     DecidableRel ((· ≤ ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun _ _ _ _ => decidable_of_iff' _ mk_le_mk
 #align localization.decidable_le Localization.decidableLe
-#align add_localization.decidable_le addLocalization.decidableLe
+#align add_localization.decidable_le AddLocalization.decidableLe
 
 @[to_additive]
 instance decidableLt [DecidableRel ((· < ·) : α → α → Prop)] :
     DecidableRel ((· < ·) : Localization s → Localization s → Prop) := fun a b =>
   Localization.recOnSubsingleton₂ a b fun _ _ _ _ => decidable_of_iff' _ mk_lt_mk
 #align localization.decidable_lt Localization.decidableLt
-#align add_localization.decidable_lt addLocalization.decidableLt
+#align add_localization.decidable_lt AddLocalization.decidableLt
 
 /-- An ordered cancellative monoid injects into its localization by sending `a` to `a / b`. -/
 @[to_additive (attr := simps!) "An ordered cancellative monoid injects into its localization by
@@ -2013,7 +2013,7 @@ def mkOrderEmbedding (b : s) : α ↪o Localization s where
   inj' := mk_left_injective _
   map_rel_iff' {a b} := by simp [-mk_eq_monoidOf_mk', mk_le_mk]
 #align localization.mk_order_embedding Localization.mkOrderEmbedding
-#align add_localization.mk_order_embedding addLocalization.mkOrderEmbedding
+#align add_localization.mk_order_embedding AddLocalization.mkOrderEmbedding
 
 end OrderedCancelCommMonoid
 
chore: fix #align lines (#3640)

This PR fixes two things:

  • Most align statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align). This is often seen in the mathport output after ending calc blocks.
  • All remaining more-than-one-line #align statements. (This was needed for a script I wrote for #3630.)
Diff
@@ -178,7 +178,6 @@ def r' : Con (M × S) := by
     calc
       (t₂ * t₁ : M) * (b.2 * d.2 * (a.1 * c.1)) = t₂ * (d.2 * c.1) * (t₁ * (b.2 * a.1)) := by ac_rfl
       _ = (t₂ * t₁ : M) * (a.2 * c.2 * (b.1 * d.1)) := by rw [ht₁, ht₂] ; ac_rfl
-
 #align localization.r' Localization.r'
 #align add_localization.r' addLocalization.r'
 
@@ -754,8 +753,7 @@ theorem mk'_spec' (x) (y : S) : f.toMap y * f.mk' x y = f.toMap x := by rw [mul_
 theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.toMap x :=
   ⟨fun H ↦ by rw [H, mk'_spec], fun H ↦ by erw [mul_inv_right, H]⟩
 #align submonoid.localization_map.eq_mk'_iff_mul_eq Submonoid.LocalizationMap.eq_mk'_iff_mul_eq
-#align add_submonoid.localization_map.eq_mk'_iff_add_eq
-  AddSubmonoid.LocalizationMap.eq_mk'_iff_add_eq
+#align add_submonoid.localization_map.eq_mk'_iff_add_eq AddSubmonoid.LocalizationMap.eq_mk'_iff_add_eq
 
 @[to_additive]
 theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.toMap y := by
@@ -876,16 +874,14 @@ theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
 theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := by
   rw [mul_comm, mk'_mul_cancel_right]
 #align submonoid.localization_map.mk'_mul_cancel_left Submonoid.LocalizationMap.mk'_mul_cancel_left
-#align add_submonoid.localization_map.mk'_add_cancel_left
-  AddSubmonoid.LocalizationMap.mk'_add_cancel_left
+#align add_submonoid.localization_map.mk'_add_cancel_left AddSubmonoid.LocalizationMap.mk'_add_cancel_left
 
 @[to_additive]
 theorem isUnit_comp (j : N →* P) (y : S) : IsUnit (j.comp f.toMap y) :=
   ⟨Units.map j <| IsUnit.liftRight (f.toMap.restrict S) f.map_units y,
     show j _ = j _ from congr_arg j <| IsUnit.coe_liftRight (f.toMap.restrict S) f.map_units _⟩
 #align submonoid.localization_map.is_unit_comp Submonoid.LocalizationMap.isUnit_comp
-#align add_submonoid.localization_map.is_add_unit_comp
-  AddSubmonoid.LocalizationMap.isAddUnit_comp
+#align add_submonoid.localization_map.is_add_unit_comp AddSubmonoid.LocalizationMap.isAddUnit_comp
 
 variable {g : M →* P}
 
@@ -1042,10 +1038,8 @@ theorem epic_of_localizationMap {j k : N →* P} (h : ∀ a, j.comp f.toMap a =
     j = k := by
   rw [← f.lift_of_comp j, ← f.lift_of_comp k]
   congr 1 with x; exact h x
-#align submonoid.localization_map.epic_of_localization_map
-  Submonoid.LocalizationMap.epic_of_localizationMap
-#align add_submonoid.localization_map.epic_of_localization_map
-  AddSubmonoid.LocalizationMap.epic_of_localizationMap
+#align submonoid.localization_map.epic_of_localization_map Submonoid.LocalizationMap.epic_of_localizationMap
+#align add_submonoid.localization_map.epic_of_localization_map AddSubmonoid.LocalizationMap.epic_of_localizationMap
 
 @[to_additive]
 theorem lift_unique {j : N →* P} (hj : ∀ x, j (f.toMap x) = g x) : f.lift hg = j := by
@@ -1084,8 +1078,7 @@ theorem lift_left_inverse {k : LocalizationMap S P} (z : N) :
   rw [sec_spec', ← hx]
   ac_rfl
 #align submonoid.localization_map.lift_left_inverse Submonoid.LocalizationMap.lift_left_inverse
-#align add_submonoid.localization_map.lift_left_inverse
-  AddSubmonoid.LocalizationMap.lift_left_inverse
+#align add_submonoid.localization_map.lift_left_inverse AddSubmonoid.LocalizationMap.lift_left_inverse
 
 @[to_additive]
 theorem lift_surjective_iff :
@@ -1102,8 +1095,7 @@ theorem lift_surjective_iff :
     use f.mk' x.1 x.2
     rw [lift_mk', mul_inv_left hg, mul_comm, ← hx]
 #align submonoid.localization_map.lift_surjective_iff Submonoid.LocalizationMap.lift_surjective_iff
-#align add_submonoid.localization_map.lift_surjective_iff
-  AddSubmonoid.LocalizationMap.lift_surjective_iff
+#align add_submonoid.localization_map.lift_surjective_iff AddSubmonoid.LocalizationMap.lift_surjective_iff
 
 @[to_additive]
 theorem lift_injective_iff :
@@ -1847,7 +1839,6 @@ instance : CommMonoidWithZero (Localization S) where
     simp only [← Localization.mk_zero y.2, mk_mul, mk_eq_mk_iff, mul_zero, zero_mul, r_of_eq]
   mul_zero := fun x ↦ Localization.induction_on x fun y => by
     simp only [← Localization.mk_zero y.2, mk_mul, mk_eq_mk_iff, mul_zero, zero_mul, r_of_eq]
-
 #align localization.mk_zero Localization.mk_zero
 
 theorem liftOn_zero {p : Type _} (f : ∀ (_ : M) (_ : S), p) (H) : liftOn 0 f H = f 0 1 := by
feat: Order on the localization (#3567)

Match https://github.com/leanprover-community/mathlib/pull/18724 and https://github.com/leanprover-community/mathlib/pull/18846

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Amelia Livingston
 
 ! This file was ported from Lean 3 source module group_theory.monoid_localization
-! leanprover-community/mathlib commit 1f0096e6caa61e9c849ec2adbd227e960e9dff58
+! leanprover-community/mathlib commit 10ee941346c27bdb5e87bb3535100c0b1f08ac41
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -43,6 +43,9 @@ This defines the localization as a quotient type, `Localization`, but the majori
 subsequent lemmas in the file are given in terms of localizations up to isomorphism, using maps
 which satisfy the characteristic predicate.
 
+The Grothendieck group construction corresponds to localizing at the top submonoid, namely making
+every element invertible.
+
 ## Implementation notes
 
 In maths it is natural to reason up to isomorphism, but in Lean we cannot naturally `rewrite` one
@@ -63,11 +66,19 @@ localization as a quotient type satisfies the characteristic predicate). The lem
 `mk_eq_monoidOf_mk'` hence gives you access to the results in the rest of the file, which are
 about the `LocalizationMap.mk'` induced by any localization map.
 
+## TODO
+
+* Show that the localization at the top monoid is a group.
+* Generalise to (nonempty) subsemigroups.
+* If we acquire more bundlings, we can make `localization.mk_order_embedding` be an ordered monoid
+  embedding.
+
 ## Tags
 localization, monoid localization, quotient monoid, congruence relation, characteristic predicate,
-commutative monoid
+commutative monoid, grothendieck group
 -/
 
+open Function
 namespace AddSubmonoid
 
 variable {M : Type _} [AddCommMonoid M] (S : AddSubmonoid M) (N : Type _) [AddCommMonoid N]
@@ -252,7 +263,7 @@ protected irreducible_def npow : ℕ → Localization S → Localization S := (r
 #align add_localization.nsmul addLocalization.nsmul
 
 @[to_additive]
-instance : CommMonoid (Localization S) where
+instance commMonoid : CommMonoid (Localization S) where
   mul := (· * ·)
   one := 1
   mul_assoc x y z := show (x.mul S y).mul S z = x.mul S (y.mul S z) by
@@ -301,6 +312,16 @@ def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
 #align localization.rec Localization.rec
 #align add_localization.rec addLocalization.rec
 
+/-- Copy of `Quotient.recOnSubsingleton₂` for `Localization` -/
+@[to_additive (attr := elab_as_elim) "Copy of `Quotient.recOnSubsingleton₂` for `addLocalization`"]
+def recOnSubsingleton₂ {r : Localization S → Localization S → Sort u}
+    [h : ∀ (a c : M) (b d : S), Subsingleton (r (mk a b) (mk c d))] (x y : Localization S)
+    (f : ∀ (a c : M) (b d : S), r (mk a b) (mk c d)) : r x y :=
+  @Quotient.recOnSubsingleton₂' _ _ _ _ r (Prod.rec fun _ _ => Prod.rec fun _ _ => h _ _ _ _) x y
+    (Prod.rec fun _ _ => Prod.rec fun _ _ => f _ _ _ _)
+#align localization.rec_on_subsingleton₂ Localization.recOnSubsingleton₂
+#align add_localization.rec_on_subsingleton₂ addLocalization.recOnSubsingleton₂
+
 @[to_additive]
 theorem mk_mul (a c : M) (b d : S) : mk a b * mk c d = mk (a * c) (b * d) :=
   show Localization.mul S _ _ = _ by rw [Localization.mul]; rfl
@@ -332,7 +353,7 @@ then `f` is defined on the whole `Localization S`. -/
 -- Porting note: the attibute `elab_as_elim` fails with `unexpected eliminator resulting type p`
 -- @[to_additive (attr := elab_as_elim)
 @[to_additive
-    "Non-dependent recursion principle for `add_localizations`: given elements `f a b : p`
+    "Non-dependent recursion principle for `addLocalization`s: given elements `f a b : p`
 for all `a b`, such that `r S (a, b) (c, d)` implies `f a b = f c d`,
 then `f` is defined on the whole `Localization S`."]
 def liftOn {p : Sort u} (x : Localization S) (f : M → S → p)
@@ -1866,3 +1887,155 @@ end LocalizationWithZeroMap
 end Submonoid
 
 end CommMonoidWithZero
+
+namespace Localization
+
+variable {α : Type _} [CancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
+
+@[to_additive]
+theorem mk_left_injective (b : s) : Injective fun a => mk a b := fun c d h => by
+  -- porting note: times out unless we add this `have`. Even `infer_instance` times out here.
+  have : Nonempty s := One.nonempty
+  simpa [-mk_eq_monoidOf_mk', mk_eq_mk_iff, r_iff_exists] using h
+#align localization.mk_left_injective Localization.mk_left_injective
+#align add_localization.mk_left_injective addLocalization.mk_left_injective
+
+@[to_additive]
+theorem mk_eq_mk_iff' : mk a₁ a₂ = mk b₁ b₂ ↔ ↑b₂ * a₁ = a₂ * b₁ := by
+  -- porting note: times out unless we add this `have`. Even `infer_instance` times out here.
+  have : Nonempty s := One.nonempty
+  simp_rw [mk_eq_mk_iff, r_iff_exists, mul_left_cancel_iff, exists_const]
+#align localization.mk_eq_mk_iff' Localization.mk_eq_mk_iff'
+#align add_localization.mk_eq_mk_iff' addLocalization.mk_eq_mk_iff'
+
+@[to_additive]
+instance decidableEq [DecidableEq α] : DecidableEq (Localization s) := fun a b =>
+  Localization.recOnSubsingleton₂ a b fun _ _ _ _ => decidable_of_iff' _ mk_eq_mk_iff'
+#align localization.decidable_eq Localization.decidableEq
+#align add_localization.decidable_eq addLocalization.decidableEq
+
+end Localization
+
+/-! ### Order -/
+
+namespace Localization
+
+variable {α : Type _}
+
+section OrderedCancelCommMonoid
+
+variable [OrderedCancelCommMonoid α] {s : Submonoid α} {a₁ b₁ : α} {a₂ b₂ : s}
+
+@[to_additive]
+instance le : LE (Localization s) :=
+  ⟨fun a b =>
+    Localization.liftOn₂ a b (fun a₁ a₂ b₁ b₂ => ↑b₂ * a₁ ≤ a₂ * b₁)
+      @fun a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd => propext $ by
+        obtain ⟨e, he⟩ := r_iff_exists.1 hab
+        obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
+        simp only [mul_right_inj] at he hf
+        dsimp
+        rw [← mul_le_mul_iff_right, mul_right_comm, ← hf, mul_right_comm, mul_right_comm (a₂ : α),
+          mul_le_mul_iff_right, ← mul_le_mul_iff_left, mul_left_comm, he, mul_left_comm,
+          mul_left_comm (b₂ : α), mul_le_mul_iff_left]⟩
+
+@[to_additive]
+instance lt : LT (Localization s) :=
+  ⟨fun a b =>
+    Localization.liftOn₂ a b (fun a₁ a₂ b₁ b₂ => ↑b₂ * a₁ < a₂ * b₁)
+      @fun a₁ b₁ a₂ b₂ c₁ d₁ c₂ d₂ hab hcd => propext $ by
+        obtain ⟨e, he⟩ := r_iff_exists.1 hab
+        obtain ⟨f, hf⟩ := r_iff_exists.1 hcd
+        simp only [mul_right_inj] at he hf
+        dsimp
+        rw [← mul_lt_mul_iff_right, mul_right_comm, ← hf, mul_right_comm, mul_right_comm (a₂ : α),
+          mul_lt_mul_iff_right, ← mul_lt_mul_iff_left, mul_left_comm, he, mul_left_comm,
+          mul_left_comm (b₂ : α), mul_lt_mul_iff_left]⟩
+
+@[to_additive]
+theorem mk_le_mk : mk a₁ a₂ ≤ mk b₁ b₂ ↔ ↑b₂ * a₁ ≤ a₂ * b₁ :=
+  Iff.rfl
+#align localization.mk_le_mk Localization.mk_le_mk
+#align add_localization.mk_le_mk addLocalization.mk_le_mk
+
+@[to_additive]
+theorem mk_lt_mk : mk a₁ a₂ < mk b₁ b₂ ↔ ↑b₂ * a₁ < a₂ * b₁ :=
+  Iff.rfl
+#align localization.mk_lt_mk Localization.mk_lt_mk
+#align add_localization.mk_lt_mk addLocalization.mk_lt_mk
+
+-- declaring this separately to the instance below makes things faster
+@[to_additive]
+instance partialOrder : PartialOrder (Localization s) where
+  le := (· ≤ ·)
+  lt := (· < ·)
+  le_refl a := Localization.induction_on a fun a => le_rfl
+  le_trans a b c :=
+    Localization.induction_on₃ a b c fun a b c hab hbc => by
+      simp only [mk_le_mk] at hab hbc⊢
+      refine' le_of_mul_le_mul_left' _
+      · exact ↑b.2
+      rw [mul_left_comm]
+      refine' (mul_le_mul_left' hab _).trans _
+      rwa [mul_left_comm, mul_left_comm (b.2 : α), mul_le_mul_iff_left]
+  le_antisymm a b := by
+    induction' a using Localization.rec with a₁ a₂
+    induction' b using Localization.rec with b₁ b₂
+    simp_rw [mk_le_mk, mk_eq_mk_iff, r_iff_exists]
+    exact fun hab hba => ⟨1, by rw [hab.antisymm hba]⟩
+    all_goals intros ; rfl
+  lt_iff_le_not_le a b := Localization.induction_on₂ a b fun a b => lt_iff_le_not_le
+
+@[to_additive]
+instance orderedCancelCommMonoid : OrderedCancelCommMonoid (Localization s) :=
+  { Localization.commMonoid s,
+    Localization.partialOrder with
+    mul_le_mul_left := fun a b =>
+      Localization.induction_on₂ a b fun a b hab c =>
+        Localization.induction_on c fun c => by
+          simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ c.1] at hab⊢
+          exact mul_le_mul_left' hab _
+    le_of_mul_le_mul_left := fun a b c =>
+      Localization.induction_on₃ a b c fun a b c hab => by
+        simp only [mk_mul, mk_le_mk, Submonoid.coe_mul, mul_mul_mul_comm _ _ a.1] at hab⊢
+        exact le_of_mul_le_mul_left' hab }
+
+@[to_additive]
+instance decidableLe [DecidableRel ((· ≤ ·) : α → α → Prop)] :
+    DecidableRel ((· ≤ ·) : Localization s → Localization s → Prop) := fun a b =>
+  Localization.recOnSubsingleton₂ a b fun _ _ _ _ => decidable_of_iff' _ mk_le_mk
+#align localization.decidable_le Localization.decidableLe
+#align add_localization.decidable_le addLocalization.decidableLe
+
+@[to_additive]
+instance decidableLt [DecidableRel ((· < ·) : α → α → Prop)] :
+    DecidableRel ((· < ·) : Localization s → Localization s → Prop) := fun a b =>
+  Localization.recOnSubsingleton₂ a b fun _ _ _ _ => decidable_of_iff' _ mk_lt_mk
+#align localization.decidable_lt Localization.decidableLt
+#align add_localization.decidable_lt addLocalization.decidableLt
+
+/-- An ordered cancellative monoid injects into its localization by sending `a` to `a / b`. -/
+@[to_additive (attr := simps!) "An ordered cancellative monoid injects into its localization by
+sending `a` to `a - b`."]
+def mkOrderEmbedding (b : s) : α ↪o Localization s where
+  toFun a := mk a b
+  inj' := mk_left_injective _
+  map_rel_iff' {a b} := by simp [-mk_eq_monoidOf_mk', mk_le_mk]
+#align localization.mk_order_embedding Localization.mkOrderEmbedding
+#align add_localization.mk_order_embedding addLocalization.mkOrderEmbedding
+
+end OrderedCancelCommMonoid
+
+@[to_additive]
+instance [LinearOrderedCancelCommMonoid α] {s : Submonoid α} :
+    LinearOrderedCancelCommMonoid (Localization s) :=
+  { Localization.orderedCancelCommMonoid with
+    le_total := fun a b =>
+      Localization.induction_on₂ a b fun _ _ => by
+        simp_rw [mk_le_mk]
+        exact le_total _ _
+    decidable_le := Localization.decidableLe
+    decidable_lt := Localization.decidableLt  -- porting note: was wrong in mathlib3
+    decidable_eq := Localization.decidableEq }
+
+end Localization
perf: dsimp only to mitigate to_additive slowness (#3580)
  • to_additive is slow on this file. I'll try to improve performance in to_additive, but this behavior is exposed by working with gigantic proof terms.
  • The dsimp only in Submonoid.LocalizationMap.lift changes to_additive time from ~27s to ~7s (still needs improving, but this puts a band-aid on it).
Diff
@@ -909,8 +909,8 @@ induced from `N` to `P` sending `z : N` to `g x - g y`, where `(x, y) : M × S`
 noncomputable def lift : N →* P where
   toFun z := g (f.sec z).1 * (IsUnit.liftRight (g.restrict S) hg (f.sec z).2)⁻¹
   map_one' := by rw [mul_inv_left, mul_one] ; exact f.eq_of_eq hg (by rw [← sec_spec, one_mul])
-  map_mul' x y :=
-    by
+  map_mul' x y := by
+    dsimp only
     rw [mul_inv_left hg, ← mul_assoc, ← mul_assoc, mul_inv_right hg, mul_comm _ (g (f.sec y).1), ←
       mul_assoc, ← mul_assoc, mul_inv_right hg]
     repeat' rw [← g.map_mul]
@@ -1203,12 +1203,12 @@ theorem map_comp_map {A : Type _} [CommMonoid A] {U : Submonoid A} {R} [CommMono
   by
   ext z
   show j.toMap _ * _ = j.toMap (l _) * _
-  · rw [mul_inv_left, ← mul_assoc, mul_inv_right]
-    show j.toMap _ * j.toMap (l (g _)) = j.toMap (l _) * _
-    rw [← j.toMap.map_mul, ← j.toMap.map_mul, ← l.map_mul, ← l.map_mul]
-    exact
-      k.comp_eq_of_eq hl j
-        (by rw [k.toMap.map_mul, k.toMap.map_mul, sec_spec', mul_assoc, map_mul_right])
+  rw [mul_inv_left, ← mul_assoc, mul_inv_right]
+  show j.toMap _ * j.toMap (l (g _)) = j.toMap (l _) * _
+  rw [← j.toMap.map_mul, ← j.toMap.map_mul, ← l.map_mul, ← l.map_mul]
+  exact
+    k.comp_eq_of_eq hl j
+      (by rw [k.toMap.map_mul, k.toMap.map_mul, sec_spec', mul_assoc, map_mul_right])
 #align submonoid.localization_map.map_comp_map Submonoid.LocalizationMap.map_comp_map
 #align add_submonoid.localization_map.map_comp_map AddSubmonoid.LocalizationMap.map_comp_map
 
@@ -1608,11 +1608,11 @@ def monoidOf : Submonoid.LocalizationMap S (Localization S) :=
         S with
     toFun := fun x ↦ mk x 1
     map_one' := mk_one
-    map_mul' := fun x y ↦ by rw [mk_mul, mul_one]
+    map_mul' := fun x y ↦ by dsimp only; rw [mk_mul, mul_one]
     map_units' := fun y ↦
-      isUnit_iff_exists_inv.2 ⟨mk 1 y, by rw [mk_mul, mul_one, one_mul, mk_self]⟩
-    surj' := fun z ↦
-      induction_on z fun x ↦ ⟨x, by rw [mk_mul, mul_comm x.fst, ← mk_mul, mk_self, one_mul]⟩
+      isUnit_iff_exists_inv.2 ⟨mk 1 y, by dsimp only; rw [mk_mul, mul_one, one_mul, mk_self]⟩
+    surj' := fun z ↦ induction_on z fun x ↦
+      ⟨x, by dsimp only; rw [mk_mul, mul_comm x.fst, ← mk_mul, mk_self, one_mul]⟩
     eq_iff_exists' := fun x y ↦
       mk_eq_mk_iff.trans <|
         r_iff_exists.trans <|
feat: support irreducible_def in to_additive (#3399)
Diff
@@ -214,12 +214,11 @@ instance inhabited : Inhabited (Localization S) := Con.Quotient.inhabited
 #align add_localization.inhabited addLocalization.inhabited
 
 /-- Multiplication in a `Localization` is defined as `⟨a, b⟩ * ⟨c, d⟩ = ⟨a * c, b * d⟩`. -/
--- Porting note: replaced irreducible_def by @[irreducible] to prevent an error with protected
-@[to_additive (attr := irreducible)
-    "Addition in an `addLocalization` is defined as `⟨a, b⟩ + ⟨c, d⟩ = ⟨a + c, b + d⟩`.
+@[to_additive "Addition in an `addLocalization` is defined as `⟨a, b⟩ + ⟨c, d⟩ = ⟨a + c, b + d⟩`.
 Should not be confused with the ring localization counterpart `Localization.add`, which maps
 `⟨a, b⟩ + ⟨c, d⟩` to `⟨d * a + b * c, b * d⟩`."]
-protected def mul : Localization S → Localization S → Localization S := (r S).commMonoid.mul
+protected irreducible_def mul : Localization S → Localization S → Localization S :=
+  (r S).commMonoid.mul
 #align localization.mul Localization.mul
 #align add_localization.add addLocalization.add
 
@@ -227,13 +226,11 @@ protected def mul : Localization S → Localization S → Localization S := (r S
 instance : Mul (Localization S) := ⟨Localization.mul S⟩
 
 /-- The identity element of a `Localization` is defined as `⟨1, 1⟩`. -/
-@[to_additive (attr := irreducible)
-    "The identity element of an `addLocalization` is defined as `⟨0, 0⟩`.
+@[to_additive "The identity element of an `addLocalization` is defined as `⟨0, 0⟩`.
 
 Should not be confused with the ring localization counterpart `Localization.zero`,
 which is defined as `⟨0, 1⟩`."]
--- Porting note: replaced irreducible_def by @[irreducible] to prevent an error with protected
-protected def one : Localization S := (r S).commMonoid.one
+protected irreducible_def one : Localization S := (r S).commMonoid.one
 #align localization.one Localization.one
 #align add_localization.zero addLocalization.zero
 
@@ -245,14 +242,12 @@ instance : One (Localization S) := ⟨Localization.one S⟩
 This is a separate `irreducible` def to ensure the elaborator doesn't waste its time
 trying to unify some huge recursive definition with itself, but unfolded one step less.
 -/
-@[to_additive (attr := irreducible)
-    "Multiplication with a natural in an `AddLocalization` is defined as
+@[to_additive "Multiplication with a natural in an `AddLocalization` is defined as
 `n • ⟨a, b⟩ = ⟨n • a, n • b⟩`.
 
 This is a separate `irreducible` def to ensure the elaborator doesn't waste its time
 trying to unify some huge recursive definition with itself, but unfolded one step less."]
--- Porting note: replaced irreducible_def by @[irreducible] to prevent an error with protected
-protected def npow : ℕ → Localization S → Localization S := (r S).commMonoid.npow
+protected irreducible_def npow : ℕ → Localization S → Localization S := (r S).commMonoid.npow
 #align localization.npow Localization.npow
 #align add_localization.nsmul addLocalization.nsmul
 
@@ -261,18 +256,18 @@ instance : CommMonoid (Localization S) where
   mul := (· * ·)
   one := 1
   mul_assoc x y z := show (x.mul S y).mul S z = x.mul S (y.mul S z) by
-    delta Localization.mul; apply (r S).commMonoid.mul_assoc
+    rw [Localization.mul]; apply (r S).commMonoid.mul_assoc
   mul_comm x y := show x.mul S y = y.mul S x by
-    delta Localization.mul; apply (r S).commMonoid.mul_comm
+    rw [Localization.mul]; apply (r S).commMonoid.mul_comm
   mul_one x := show x.mul S (.one S) = x by
-    delta Localization.mul Localization.one; apply (r S).commMonoid.mul_one
+    rw [Localization.mul, Localization.one]; apply (r S).commMonoid.mul_one
   one_mul x := show (Localization.one S).mul S x = x by
-    delta Localization.mul Localization.one; apply (r S).commMonoid.one_mul
+    rw [Localization.mul, Localization.one]; apply (r S).commMonoid.one_mul
   npow := Localization.npow S
   npow_zero x := show Localization.npow S 0 x = .one S by
-    delta Localization.npow Localization.one; apply (r S).commMonoid.npow_zero
+    rw [Localization.npow, Localization.one]; apply (r S).commMonoid.npow_zero
   npow_succ n x := show .npow S n.succ x = x.mul S (.npow S n x) by
-    delta Localization.npow Localization.mul; apply (r S).commMonoid.npow_succ
+    rw [Localization.npow, Localization.mul]; apply (r S).commMonoid.npow_succ
 
 variable {S}
 
feat: irreducible_def: support protected, equation lemmas (#3395)
Diff
@@ -256,25 +256,23 @@ protected def npow : ℕ → Localization S → Localization S := (r S).commMono
 #align localization.npow Localization.npow
 #align add_localization.nsmul addLocalization.nsmul
 
--- Porting note: remove the attribute `local` because of error:
--- invalid attribute 'semireducible', must be global
-attribute [semireducible] Localization.mul Localization.one Localization.npow
-
 @[to_additive]
 instance : CommMonoid (Localization S) where
   mul := (· * ·)
   one := 1
-  mul_assoc :=
-    show ∀ x y z : Localization S, x * y * z = x * (y * z) from (r S).commMonoid.mul_assoc
-  mul_comm := show ∀ x y : Localization S, x * y = y * x from (r S).commMonoid.mul_comm
-  mul_one := show ∀ x : Localization S, x * 1 = x from (r S).commMonoid.mul_one
-  one_mul := show ∀ x : Localization S, 1 * x = x from (r S).commMonoid.one_mul
+  mul_assoc x y z := show (x.mul S y).mul S z = x.mul S (y.mul S z) by
+    delta Localization.mul; apply (r S).commMonoid.mul_assoc
+  mul_comm x y := show x.mul S y = y.mul S x by
+    delta Localization.mul; apply (r S).commMonoid.mul_comm
+  mul_one x := show x.mul S (.one S) = x by
+    delta Localization.mul Localization.one; apply (r S).commMonoid.mul_one
+  one_mul x := show (Localization.one S).mul S x = x by
+    delta Localization.mul Localization.one; apply (r S).commMonoid.one_mul
   npow := Localization.npow S
-  npow_zero :=
-    show ∀ x : Localization S, Localization.npow S 0 x = 1 from (r S).commMonoid.npow_zero
-  npow_succ :=
-    show ∀ (n : ℕ) (x : Localization S), Localization.npow S n.succ x = x * Localization.npow S n x
-      from (r S).commMonoid.npow_succ
+  npow_zero x := show Localization.npow S 0 x = .one S by
+    delta Localization.npow Localization.one; apply (r S).commMonoid.npow_zero
+  npow_succ n x := show .npow S n.succ x = x.mul S (.npow S n x) by
+    delta Localization.npow Localization.mul; apply (r S).commMonoid.npow_succ
 
 variable {S}
 
@@ -309,17 +307,20 @@ def rec {p : Localization S → Sort u} (f : ∀ (a : M) (b : S), p (mk a b))
 #align add_localization.rec addLocalization.rec
 
 @[to_additive]
-theorem mk_mul (a c : M) (b d : S) : mk a b * mk c d = mk (a * c) (b * d) := rfl
+theorem mk_mul (a c : M) (b d : S) : mk a b * mk c d = mk (a * c) (b * d) :=
+  show Localization.mul S _ _ = _ by rw [Localization.mul]; rfl
 #align localization.mk_mul Localization.mk_mul
 #align add_localization.mk_add addLocalization.mk_add
 
 @[to_additive]
-theorem mk_one : mk 1 (1 : S) = 1 := rfl
+theorem mk_one : mk 1 (1 : S) = 1 :=
+  show mk _ _ = .one S by rw [Localization.one]; rfl
 #align localization.mk_one Localization.mk_one
 #align add_localization.mk_zero addLocalization.mk_zero
 
 @[to_additive]
-theorem mk_pow (n : ℕ) (a : M) (b : S) : mk a b ^ n = mk (a ^ n) (b ^ n) := rfl
+theorem mk_pow (n : ℕ) (a : M) (b : S) : mk a b ^ n = mk (a ^ n) (b ^ n) :=
+  show Localization.npow S _ _ = _ by rw [Localization.npow]; rfl
 #align localization.mk_pow Localization.mk_pow
 #align add_localization.mk_nsmul addLocalization.mk_nsmul
 
@@ -424,9 +425,7 @@ section Scalar
 variable {R R₁ R₂ : Type _}
 
 /-- Scalar multiplication in a monoid localization is defined as `c • ⟨a, b⟩ = ⟨c • a, b⟩`. -/
--- Porting note: replaced irreducible_def by @[irreducible] to prevent an error with protected
-@[irreducible]
-protected def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Localization S) :
+protected irreducible_def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Localization S) :
   Localization S :=
     Localization.liftOn z (fun a b ↦ mk (c • a) b)
       (fun {a a' b b'} h ↦ mk_eq_mk_iff.2 (by
@@ -447,7 +446,7 @@ instance [SMul R M] [IsScalarTower R M M] : SMul R (Localization S) where smul :
 
 theorem smul_mk [SMul R M] [IsScalarTower R M M] (c : R) (a b) :
     c • (mk a b : Localization S) = mk (c • a) b := by
- delta HSMul.hSMul instHSMul SMul.smul instSMulLocalization Localization.smul
+ simp only [HSMul.hSMul, instHSMul, SMul.smul, instSMulLocalization, Localization.smul]
  show liftOn (mk a b) (fun a b => mk (c • a) b) _ = _
  exact liftOn_mk (fun a b => mk (c • a) b) _ a b
 #align localization.smul_mk Localization.smul_mk
@@ -1811,37 +1810,27 @@ end Submonoid
 
 namespace Localization
 
--- Porting note: removed local since attribute 'semireducible' must be global
-attribute [semireducible] Localization
-
 /-- The zero element in a Localization is defined as `(0, 1)`.
 
 Should not be confused with `AddLocalization.zero` which is `(0, 0)`. -/
--- Porting note: replaced irreducible_def by @[irreducible] to prevent an error with protected
-@[irreducible]
-protected def zero : Localization S :=
+protected irreducible_def zero : Localization S :=
   mk 0 1
 #align localization.zero Localization.zero
 
 instance : Zero (Localization S) := ⟨Localization.zero S⟩
 
--- Porting note: removed local since attribute 'semireducible' must be global
-attribute [semireducible] Localization.zero Localization.mul
-
-instance : CommMonoidWithZero (Localization S) :=
-{ zero_mul := fun x ↦ Localization.induction_on x <| by
-      intro
-      refine mk_eq_mk_iff.mpr (r_of_eq (by simp [zero_mul, mul_zero]))
-  mul_zero := fun x ↦ Localization.induction_on x <| by
-      intro
-      refine mk_eq_mk_iff.mpr (r_of_eq (by simp [zero_mul, mul_zero])) }
-
 variable {S}
 
 theorem mk_zero (x : S) : mk 0 (x : S) = 0 :=
   calc
     mk 0 x = mk 0 1 := mk_eq_mk_iff.mpr (r_of_eq (by simp))
-    _ = 0 := rfl
+    _ = Localization.zero S := (Localization.zero_def S).symm
+
+instance : CommMonoidWithZero (Localization S) where
+  zero_mul := fun x ↦ Localization.induction_on x fun y => by
+    simp only [← Localization.mk_zero y.2, mk_mul, mk_eq_mk_iff, mul_zero, zero_mul, r_of_eq]
+  mul_zero := fun x ↦ Localization.induction_on x fun y => by
+    simp only [← Localization.mk_zero y.2, mk_mul, mk_eq_mk_iff, mul_zero, zero_mul, r_of_eq]
 
 #align localization.mk_zero Localization.mk_zero
 
chore: fix align linebreaks (#3127)

Same as #3103, I missed those before, probably because I didn't rebase on HEAD before. This shouldnow include all cases of aligns with linebreak.

find . -type f -name "*.lean" -exec sed -i -E 'N;s/^#align ([^[:space:]]+)\n *([^[:space:]]+)$/#align \1 \2/' {} \;

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -836,18 +836,14 @@ theorem mk'_self (x) (H : x ∈ S) : f.mk' x ⟨x, H⟩ = 1 := mk'_self' f ⟨x,
 @[to_additive]
 theorem mul_mk'_eq_mk'_of_mul (x₁ x₂) (y : S) : f.toMap x₁ * f.mk' x₂ y = f.mk' (x₁ * x₂) y := by
   rw [← mk'_one, ← mk'_mul, one_mul]
-#align submonoid.localization_map.mul_mk'_eq_mk'_of_mul
-  Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mul
-#align add_submonoid.localization_map.add_mk'_eq_mk'_of_add
-  AddSubmonoid.LocalizationMap.add_mk'_eq_mk'_of_add
+#align submonoid.localization_map.mul_mk'_eq_mk'_of_mul Submonoid.LocalizationMap.mul_mk'_eq_mk'_of_mul
+#align add_submonoid.localization_map.add_mk'_eq_mk'_of_add AddSubmonoid.LocalizationMap.add_mk'_eq_mk'_of_add
 
 @[to_additive]
 theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁ = f.mk' (x₁ * x₂) y := by
   rw [mul_comm, mul_mk'_eq_mk'_of_mul]
-#align submonoid.localization_map.mk'_mul_eq_mk'_of_mul
-  Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mul
-#align add_submonoid.localization_map.mk'_add_eq_mk'_of_add
-  AddSubmonoid.LocalizationMap.mk'_add_eq_mk'_of_add
+#align submonoid.localization_map.mk'_mul_eq_mk'_of_mul Submonoid.LocalizationMap.mk'_mul_eq_mk'_of_mul
+#align add_submonoid.localization_map.mk'_add_eq_mk'_of_add AddSubmonoid.LocalizationMap.mk'_add_eq_mk'_of_add
 
 @[to_additive]
 theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
@@ -1306,8 +1302,7 @@ variable {A : Type _} [AddCommMonoid A] (x : A) {B : Type _} [AddCommMonoid B] (
 /-- Given `x : A` and a Localization map `F : A →+ B` away from `x`, `neg_self` is `- (F x)`. -/
 noncomputable def AwayMap.negSelf : B :=
   F.mk' 0 ⟨x, mem_multiples _⟩
-#align add_submonoid.localization_map.away_map.neg_self
-  AddSubmonoid.LocalizationMap.AwayMap.negSelf
+#align add_submonoid.localization_map.away_map.neg_self AddSubmonoid.LocalizationMap.AwayMap.negSelf
 
 /-- Given `x : A`, a localization map `F : A →+ B` away from `x`, and a map of `add_comm_monoid`s
 `g : A →+ C` such that `g x` is invertible, the homomorphism induced from `B` to `C` sending
@@ -1330,8 +1325,7 @@ theorem AwayMap.lift_eq (hg : IsAddUnit (g x)) (a : A) : F.lift x hg (F.toMap a)
 @[simp]
 theorem AwayMap.lift_comp (hg : IsAddUnit (g x)) : (F.lift x hg).comp F.toMap = g :=
   AddSubmonoid.LocalizationMap.lift_comp _ _
-#align add_submonoid.localization_map.away_map.lift_comp
-  AddSubmonoid.LocalizationMap.AwayMap.lift_comp
+#align add_submonoid.localization_map.away_map.lift_comp AddSubmonoid.LocalizationMap.AwayMap.lift_comp
 
 /-- Given `x y : A` and Localization maps `F : A →+ B, G : A →+ C` away from `x` and `x + y`
 respectively, the homomorphism induced from `B` to `C`. -/
@@ -1340,8 +1334,7 @@ noncomputable def awayToAwayRight (y : A) (G : AwayMap (x + y) C) : B →+ C :=
     show IsAddUnit (G.toMap x) from
       isAddUnit_of_add_eq_zero (G.toMap x) (G.mk' y ⟨x + y, mem_multiples _⟩) <| by
         rw [add_mk'_eq_mk'_of_add, mk'_self]
-#align add_submonoid.localization_map.away_to_away_right
-  AddSubmonoid.LocalizationMap.awayToAwayRight
+#align add_submonoid.localization_map.away_to_away_right AddSubmonoid.LocalizationMap.awayToAwayRight
 
 end AwayMap
 
@@ -1400,42 +1393,32 @@ def ofMulEquivOfLocalizations (k : N ≃* P) : LocalizationMap S P :=
       let ⟨x, hx⟩ := f.surj z
       ⟨x, show v * k _ = k _ by rw [← hx, k.map_mul, ← hz] ; rfl⟩)
     fun x y ↦ k.apply_eq_iff_eq.trans f.eq_iff_exists
-#align submonoid.localization_map.of_mul_equiv_of_localizations
-  Submonoid.LocalizationMap.ofMulEquivOfLocalizations
-#align add_submonoid.localization_map.of_add_equiv_of_localizations
-  AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations
+#align submonoid.localization_map.of_mul_equiv_of_localizations Submonoid.LocalizationMap.ofMulEquivOfLocalizations
+#align add_submonoid.localization_map.of_add_equiv_of_localizations AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations
 
 @[to_additive (attr := simp)]
 theorem ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
     (f.ofMulEquivOfLocalizations k).toMap x = k (f.toMap x) := rfl
-#align submonoid.localization_map.of_mul_equiv_of_localizations_apply
-  Submonoid.LocalizationMap.ofMulEquivOfLocalizations_apply
-#align add_submonoid.localization_map.of_add_equiv_of_localizations_apply
-  AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_apply
+#align submonoid.localization_map.of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.ofMulEquivOfLocalizations_apply
+#align add_submonoid.localization_map.of_add_equiv_of_localizations_apply AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_apply
 
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq {k : N ≃* P} :
     (f.ofMulEquivOfLocalizations k).toMap = k.toMonoidHom.comp f.toMap := rfl
-#align submonoid.localization_map.of_mul_equiv_of_localizations_eq
-  Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq
-#align add_submonoid.localization_map.of_add_equiv_of_localizations_eq
-  AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_eq
+#align submonoid.localization_map.of_mul_equiv_of_localizations_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq
+#align add_submonoid.localization_map.of_add_equiv_of_localizations_eq AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_eq
 
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply {k : N ≃* P} (x) :
     k.symm ((f.ofMulEquivOfLocalizations k).toMap x) = f.toMap x := k.symm_apply_apply (f.toMap x)
-#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply
-Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply
-#align add_submonoid.localization_map.symm_comp_of_add_equiv_of_localizations_apply
-  AddSubmonoid.LocalizationMap.symm_comp_ofAddEquivOfLocalizations_apply
+#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply
+#align add_submonoid.localization_map.symm_comp_of_add_equiv_of_localizations_apply AddSubmonoid.LocalizationMap.symm_comp_ofAddEquivOfLocalizations_apply
 
 @[to_additive]
 theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
     k ((f.ofMulEquivOfLocalizations k.symm).toMap x) = f.toMap x := k.apply_symm_apply (f.toMap x)
-#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply'
-  Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply'
-#align add_submonoid.localization_map.symm_comp_of_add_equiv_of_localizations_apply'
-  AddSubmonoid.LocalizationMap.symm_comp_ofAddEquivOfLocalizations_apply'
+#align submonoid.localization_map.symm_comp_of_mul_equiv_of_localizations_apply' Submonoid.LocalizationMap.symm_comp_ofMulEquivOfLocalizations_apply'
+#align add_submonoid.localization_map.symm_comp_of_add_equiv_of_localizations_apply' AddSubmonoid.LocalizationMap.symm_comp_ofAddEquivOfLocalizations_apply'
 
 @[to_additive]
 theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
@@ -1448,10 +1431,8 @@ theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
 theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S P) :
     f.ofMulEquivOfLocalizations (f.mulEquivOfLocalizations k) = k :=
   toMap_injective <| f.lift_comp k.map_units
-#align submonoid.localization_map.mul_equiv_of_localizations_right_inv
-  Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv
-#align add_submonoid.localization_map.add_equiv_of_localizations_right_inv
-  AddSubmonoid.LocalizationMap.addEquivOfLocalizations_right_inv
+#align submonoid.localization_map.mul_equiv_of_localizations_right_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv
+#align add_submonoid.localization_map.add_equiv_of_localizations_right_inv AddSubmonoid.LocalizationMap.addEquivOfLocalizations_right_inv
 
 -- @[simp] -- Porting note: simp can prove this
 @[to_additive addEquivOfLocalizations_right_inv_apply]
@@ -1464,10 +1445,8 @@ theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
 theorem mulEquivOfLocalizations_left_inv (k : N ≃* P) :
     f.mulEquivOfLocalizations (f.ofMulEquivOfLocalizations k) = k :=
   FunLike.ext _ _ fun x ↦ FunLike.ext_iff.1 (f.lift_of_comp k.toMonoidHom) x
-#align submonoid.localization_map.mul_equiv_of_localizations_left_inv
-  Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv
-#align add_submonoid.localization_map.add_equiv_of_localizations_left_neg
-  AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg
+#align submonoid.localization_map.mul_equiv_of_localizations_left_inv Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv
+#align add_submonoid.localization_map.add_equiv_of_localizations_left_neg AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg
 
 -- @[simp] -- Porting note: simp can prove this
 @[to_additive]
@@ -1522,24 +1501,19 @@ def ofMulEquivOfDom {k : P ≃* M} (H : T.map k.toMonoidHom = S) : LocalizationM
             ⟨⟨k c, H ▸ Set.mem_image_of_mem k c.2⟩, by
               erw [← k.map_mul] ; rw [hc, k.map_mul] ; rfl⟩⟩
 #align submonoid.localization_map.of_mul_equiv_of_dom Submonoid.LocalizationMap.ofMulEquivOfDom
-#align add_submonoid.localization_map.of_add_equiv_of_dom
-  AddSubmonoid.LocalizationMap.ofAddEquivOfDom
+#align add_submonoid.localization_map.of_add_equiv_of_dom AddSubmonoid.LocalizationMap.ofAddEquivOfDom
 
 @[to_additive (attr := simp)]
 theorem ofMulEquivOfDom_apply {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
     (f.ofMulEquivOfDom H).toMap x = f.toMap (k x) := rfl
-#align submonoid.localization_map.of_mul_equiv_of_dom_apply
-  Submonoid.LocalizationMap.ofMulEquivOfDom_apply
-#align add_submonoid.localization_map.of_add_equiv_of_dom_apply
-  AddSubmonoid.LocalizationMap.ofAddEquivOfDom_apply
+#align submonoid.localization_map.of_mul_equiv_of_dom_apply Submonoid.LocalizationMap.ofMulEquivOfDom_apply
+#align add_submonoid.localization_map.of_add_equiv_of_dom_apply AddSubmonoid.LocalizationMap.ofAddEquivOfDom_apply
 
 @[to_additive]
 theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.toMonoidHom = S) :
     (f.ofMulEquivOfDom H).toMap = f.toMap.comp k.toMonoidHom :=rfl
-#align submonoid.localization_map.of_mul_equiv_of_dom_eq
-  Submonoid.LocalizationMap.ofMulEquivOfDom_eq
-#align add_submonoid.localization_map.of_add_equiv_of_dom_eq
-  AddSubmonoid.LocalizationMap.ofAddEquivOfDom_eq
+#align submonoid.localization_map.of_mul_equiv_of_dom_eq Submonoid.LocalizationMap.ofMulEquivOfDom_eq
+#align add_submonoid.localization_map.of_add_equiv_of_dom_eq AddSubmonoid.LocalizationMap.ofAddEquivOfDom_eq
 
 @[to_additive]
 theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
@@ -1572,60 +1546,48 @@ isomorphism `j : M ≃+ P` such that `j(S) = T` induces an isomorphism of locali
 noncomputable def mulEquivOfMulEquiv (k : LocalizationMap T Q) {j : M ≃* P}
     (H : S.map j.toMonoidHom = T) : N ≃* Q :=
   f.mulEquivOfLocalizations <| k.ofMulEquivOfDom H
-#align submonoid.localization_map.mul_equiv_of_mul_equiv
-  Submonoid.LocalizationMap.mulEquivOfMulEquiv
-#align add_submonoid.localization_map.add_equiv_of_add_equiv
-  AddSubmonoid.LocalizationMap.addEquivOfAddEquiv
+#align submonoid.localization_map.mul_equiv_of_mul_equiv Submonoid.LocalizationMap.mulEquivOfMulEquiv
+#align add_submonoid.localization_map.add_equiv_of_add_equiv AddSubmonoid.LocalizationMap.addEquivOfAddEquiv
 
 @[to_additive (attr := simp)]
 theorem mulEquivOfMulEquiv_eq_map_apply {k : LocalizationMap T Q} {j : M ≃* P}
     (H : S.map j.toMonoidHom = T) (x) :
     f.mulEquivOfMulEquiv k H x =
       f.map (fun y : S ↦ show j.toMonoidHom y ∈ T from H ▸ Set.mem_image_of_mem j y.2) k x := rfl
-#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map_apply
-  Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map_apply
-#align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map_apply
-  AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map_apply
+#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map_apply Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map_apply
+#align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map_apply AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map_apply
 
 @[to_additive]
 theorem mulEquivOfMulEquiv_eq_map {k : LocalizationMap T Q} {j : M ≃* P}
     (H : S.map j.toMonoidHom = T) :
     (f.mulEquivOfMulEquiv k H).toMonoidHom =
       f.map (fun y : S ↦ show j.toMonoidHom y ∈ T from H ▸ Set.mem_image_of_mem j y.2) k := rfl
-#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map
-  Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map
-#align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map
-  AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map
+#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map
+#align add_submonoid.localization_map.add_equiv_of_add_equiv_eq_map AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map
 
 @[to_additive (attr := simp, nolint simpNF)]
 theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T)
     (x) :
     f.mulEquivOfMulEquiv k H (f.toMap x) = k.toMap (j x) :=
   f.map_eq (fun y : S ↦ H ▸ Set.mem_image_of_mem j y.2) _
-#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq
-  Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq
-#align add_submonoid.localization_map.add_equiv_of_add_equiv_eq
-  AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq
+#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq
+#align add_submonoid.localization_map.add_equiv_of_add_equiv_eq AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq
 
 @[to_additive (attr := simp, nolint simpNF)]
 theorem mulEquivOfMulEquiv_mk' {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T)
     (x y) :
     f.mulEquivOfMulEquiv k H (f.mk' x y) = k.mk' (j x) ⟨j y, H ▸ Set.mem_image_of_mem j y.2⟩ :=
   f.map_mk' (fun y : S ↦ H ▸ Set.mem_image_of_mem j y.2) _ _
-#align submonoid.localization_map.mul_equiv_of_mul_equiv_mk'
-  Submonoid.LocalizationMap.mulEquivOfMulEquiv_mk'
-#align add_submonoid.localization_map.add_equiv_of_add_equiv_mk'
-  AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_mk'
+#align submonoid.localization_map.mul_equiv_of_mul_equiv_mk' Submonoid.LocalizationMap.mulEquivOfMulEquiv_mk'
+#align add_submonoid.localization_map.add_equiv_of_add_equiv_mk' AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_mk'
 
 @[to_additive (attr := simp, nolint simpNF)]
 theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
     (H : S.map j.toMonoidHom = T) (x) :
     (f.ofMulEquivOfLocalizations (f.mulEquivOfMulEquiv k H)).toMap x = k.toMap (j x) :=
   ext_iff.1 (f.mulEquivOfLocalizations_right_inv (k.ofMulEquivOfDom H)) x
-#align submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply
-  Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_apply
-#align add_submonoid.localization_map.of_add_equiv_of_add_equiv_apply
-  AddSubmonoid.LocalizationMap.of_addEquivOfAddEquiv_apply
+#align submonoid.localization_map.of_mul_equiv_of_mul_equiv_apply Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_apply
+#align add_submonoid.localization_map.of_add_equiv_of_add_equiv_apply AddSubmonoid.LocalizationMap.of_addEquivOfAddEquiv_apply
 
 @[to_additive]
 theorem of_mulEquivOfMulEquiv {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T) :
@@ -1740,18 +1702,15 @@ theorem mulEquivOfQuotient_mk (x y) : mulEquivOfQuotient f (mk x y) = f.mk' x y
 @[to_additive]
 theorem mulEquivOfQuotient_monoidOf (x) : mulEquivOfQuotient f ((monoidOf S).toMap x) = f.toMap x :=
   by simp
-#align localization.mul_equiv_of_quotient_monoid_of
-  Localization.mulEquivOfQuotient_monoidOf
-#align add_localization.add_equiv_of_quotient_add_monoid_of
-  addLocalization.addEquivOfQuotient_addMonoidOf
+#align localization.mul_equiv_of_quotient_monoid_of Localization.mulEquivOfQuotient_monoidOf
+#align add_localization.add_equiv_of_quotient_add_monoid_of addLocalization.addEquivOfQuotient_addMonoidOf
 
 @[to_additive (attr := simp)]
 theorem mulEquivOfQuotient_symm_mk' (x y) :
     (mulEquivOfQuotient f).symm (f.mk' x y) = (monoidOf S).mk' x y :=
   f.lift_mk' (monoidOf S).map_units _ _
 #align localization.mul_equiv_of_quotient_symm_mk' Localization.mulEquivOfQuotient_symm_mk'
-#align add_localization.add_equiv_of_quotient_symm_mk'
-  addLocalization.addEquivOfQuotient_symm_mk'
+#align add_localization.add_equiv_of_quotient_symm_mk' addLocalization.addEquivOfQuotient_symm_mk'
 
 @[to_additive]
 theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x y) = mk x y := by
@@ -1846,8 +1805,7 @@ variable {S N}
 /-- The monoid with zero hom underlying a `localization_map`. -/
 def LocalizationWithZeroMap.toMonoidWithZeroHom (f : LocalizationWithZeroMap S N) : M →*₀ N :=
   { f with }
-#align submonoid.localization_with_zero_map.to_monoid_with_zero_hom
-  Submonoid.LocalizationWithZeroMap.toMonoidWithZeroHom
+#align submonoid.localization_with_zero_map.to_monoid_with_zero_hom Submonoid.LocalizationWithZeroMap.toMonoidWithZeroHom
 
 end Submonoid
 
chore: fix align linebreaks (#3103)

Apparently we have CI scripts that assume those fall on a single line. The command line used to fix the aligns was:

find . -type f -name "*.lean" -exec sed -i -E 'N;s/^#align ([^[:space:]]+)\n *([^[:space:]]+)$/#align \1 \2/' {} \;

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -746,8 +746,7 @@ theorem eq_mk'_iff_mul_eq {x} {y : S} {z} : z = f.mk' x y ↔ z * f.toMap y = f.
 theorem mk'_eq_iff_eq_mul {x} {y : S} {z} : f.mk' x y = z ↔ f.toMap x = z * f.toMap y := by
   rw [eq_comm, eq_mk'_iff_mul_eq, eq_comm]
 #align submonoid.localization_map.mk'_eq_iff_eq_mul Submonoid.LocalizationMap.mk'_eq_iff_eq_mul
-#align add_submonoid.localization_map.mk'_eq_iff_eq_add
-  AddSubmonoid.LocalizationMap.mk'_eq_iff_eq_add
+#align add_submonoid.localization_map.mk'_eq_iff_eq_add AddSubmonoid.LocalizationMap.mk'_eq_iff_eq_add
 
 @[to_additive]
 theorem mk'_eq_iff_eq {x₁ x₂} {y₁ y₂ : S} :
@@ -794,8 +793,7 @@ theorem mk'_eq_iff_mk'_eq (g : LocalizationMap S P) {x₁ x₂} {y₁ y₂ : S}
     f.mk' x₁ y₁ = f.mk' x₂ y₂ ↔ g.mk' x₁ y₁ = g.mk' x₂ y₂ :=
   f.eq'.trans g.eq'.symm
 #align submonoid.localization_map.mk'_eq_iff_mk'_eq Submonoid.LocalizationMap.mk'_eq_iff_mk'_eq
-#align add_submonoid.localization_map.mk'_eq_iff_mk'_eq
-  AddSubmonoid.LocalizationMap.mk'_eq_iff_mk'_eq
+#align add_submonoid.localization_map.mk'_eq_iff_mk'_eq AddSubmonoid.LocalizationMap.mk'_eq_iff_mk'_eq
 
 /-- Given a Localization map `f : M →* N` for a Submonoid `S ⊆ M`, for all `x₁ : M` and `y₁ ∈ S`,
 if `x₂ : M, y₂ ∈ S` are such that `f x₁ * (f y₁)⁻¹ * f y₂ = f x₂`, then there exists `c ∈ S`
@@ -808,8 +806,7 @@ theorem exists_of_sec_mk' (x) (y : S) :
     ∃ c : S, ↑c * (↑(f.sec <| f.mk' x y).2 * x) = c * (y * (f.sec <| f.mk' x y).1) :=
   f.eq_iff_exists.1 <| f.mk'_eq_iff_eq.1 <| (mk'_sec _ _).symm
 #align submonoid.localization_map.exists_of_sec_mk' Submonoid.LocalizationMap.exists_of_sec_mk'
-#align add_submonoid.localization_map.exists_of_sec_mk'
-  AddSubmonoid.LocalizationMap.exists_of_sec_mk'
+#align add_submonoid.localization_map.exists_of_sec_mk' AddSubmonoid.LocalizationMap.exists_of_sec_mk'
 
 @[to_additive]
 theorem mk'_eq_of_eq {a₁ b₁ : M} {a₂ b₂ : S} (H : ↑a₂ * b₁ = ↑b₂ * a₁) :
@@ -856,16 +853,13 @@ theorem mk'_mul_eq_mk'_of_mul (x₁ x₂) (y : S) : f.mk' x₂ y * f.toMap x₁
 theorem mul_mk'_one_eq_mk' (x) (y : S) : f.toMap x * f.mk' 1 y = f.mk' x y := by
   rw [mul_mk'_eq_mk'_of_mul, mul_one]
 #align submonoid.localization_map.mul_mk'_one_eq_mk' Submonoid.LocalizationMap.mul_mk'_one_eq_mk'
-#align add_submonoid.localization_map.add_mk'_zero_eq_mk'
-  AddSubmonoid.LocalizationMap.add_mk'_zero_eq_mk'
+#align add_submonoid.localization_map.add_mk'_zero_eq_mk' AddSubmonoid.LocalizationMap.add_mk'_zero_eq_mk'
 
 @[to_additive (attr := simp)]
 theorem mk'_mul_cancel_right (x : M) (y : S) : f.mk' (x * y) y = f.toMap x := by
   rw [← mul_mk'_one_eq_mk', f.toMap.map_mul, mul_assoc, mul_mk'_one_eq_mk', mk'_self', mul_one]
-#align submonoid.localization_map.mk'_mul_cancel_right
-  Submonoid.LocalizationMap.mk'_mul_cancel_right
-#align add_submonoid.localization_map.mk'_add_cancel_right
-  AddSubmonoid.LocalizationMap.mk'_add_cancel_right
+#align submonoid.localization_map.mk'_mul_cancel_right Submonoid.LocalizationMap.mk'_mul_cancel_right
+#align add_submonoid.localization_map.mk'_add_cancel_right AddSubmonoid.LocalizationMap.mk'_add_cancel_right
 
 @[to_additive]
 theorem mk'_mul_cancel_left (x) (y : S) : f.mk' ((y : M) * x) y = f.toMap x := by
@@ -1116,8 +1110,7 @@ theorem lift_injective_iff :
     rw [← f.mk'_sec z, ← f.mk'_sec w]
     exact (mul_inv f.map_units).2 ((H _ _).2 <| (mul_inv hg).1 h)
 #align submonoid.localization_map.lift_injective_iff Submonoid.LocalizationMap.lift_injective_iff
-#align add_submonoid.localization_map.lift_injective_iff
-  AddSubmonoid.LocalizationMap.lift_injective_iff
+#align add_submonoid.localization_map.lift_injective_iff AddSubmonoid.LocalizationMap.lift_injective_iff
 
 variable {T : Submonoid P} (hy : ∀ y : S, g y ∈ T) {Q : Type _} [CommMonoid Q]
   (k : LocalizationMap T Q)
@@ -1374,34 +1367,26 @@ noncomputable def mulEquivOfLocalizations (k : LocalizationMap S P) : N ≃* P :
   left_inv := f.lift_left_inverse
   right_inv := k.lift_left_inverse
   map_mul' :=  MonoidHom.map_mul _ }
-#align submonoid.localization_map.mul_equiv_of_localizations
-  Submonoid.LocalizationMap.mulEquivOfLocalizations
-#align add_submonoid.localization_map.add_equiv_of_localizations
-  AddSubmonoid.LocalizationMap.addEquivOfLocalizations
+#align submonoid.localization_map.mul_equiv_of_localizations Submonoid.LocalizationMap.mulEquivOfLocalizations
+#align add_submonoid.localization_map.add_equiv_of_localizations AddSubmonoid.LocalizationMap.addEquivOfLocalizations
 
 @[to_additive (attr := simp)]
 theorem mulEquivOfLocalizations_apply {k : LocalizationMap S P} {x} :
     f.mulEquivOfLocalizations k x = f.lift k.map_units x := rfl
-#align submonoid.localization_map.mul_equiv_of_localizations_apply
-  Submonoid.LocalizationMap.mulEquivOfLocalizations_apply
-#align add_submonoid.localization_map.add_equiv_of_localizations_apply
-  AddSubmonoid.LocalizationMap.addEquivOfLocalizations_apply
+#align submonoid.localization_map.mul_equiv_of_localizations_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_apply
+#align add_submonoid.localization_map.add_equiv_of_localizations_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_apply
 
 @[to_additive (attr := simp)]
 theorem mulEquivOfLocalizations_symm_apply {k : LocalizationMap S P} {x} :
     (f.mulEquivOfLocalizations k).symm x = k.lift f.map_units x := rfl
-#align submonoid.localization_map.mul_equiv_of_localizations_symm_apply
-  Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_apply
-#align add_submonoid.localization_map.add_equiv_of_localizations_symm_apply
-  AddSubmonoid.LocalizationMap.addEquivOfLocalizations_symm_apply
+#align submonoid.localization_map.mul_equiv_of_localizations_symm_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_apply
+#align add_submonoid.localization_map.add_equiv_of_localizations_symm_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_symm_apply
 
 @[to_additive]
 theorem mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations {k : LocalizationMap S P} :
     (k.mulEquivOfLocalizations f).symm = f.mulEquivOfLocalizations k := rfl
-#align submonoid.localization_map.mul_equiv_of_localizations_symm_eq_mul_equiv_of_localizations
-  Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations
-#align add_submonoid.localization_map.add_equiv_of_localizations_symm_eq_add_equiv_of_localizations
-  AddSubmonoid.LocalizationMap.addEquivOfLocalizations_symm_eq_addEquivOfLocalizations
+#align submonoid.localization_map.mul_equiv_of_localizations_symm_eq_mul_equiv_of_localizations Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_eq_mulEquivOfLocalizations
+#align add_submonoid.localization_map.add_equiv_of_localizations_symm_eq_add_equiv_of_localizations AddSubmonoid.LocalizationMap.addEquivOfLocalizations_symm_eq_addEquivOfLocalizations
 
 /-- If `f : M →* N` is a Localization map for a Submonoid `S` and `k : N ≃* P` is an isomorphism
 of `CommMonoid`s, `k ∘ f` is a Localization map for `M` at `S`. -/
@@ -1456,10 +1441,8 @@ theorem symm_comp_ofMulEquivOfLocalizations_apply' {k : P ≃* N} (x) :
 theorem ofMulEquivOfLocalizations_eq_iff_eq {k : N ≃* P} {x y} :
     (f.ofMulEquivOfLocalizations k).toMap x = y ↔ f.toMap x = k.symm y :=
   k.toEquiv.eq_symm_apply.symm
-#align submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq
-  Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eq
-#align add_submonoid.localization_map.of_add_equiv_of_localizations_eq_iff_eq
-  AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_eq_iff_eq
+#align submonoid.localization_map.of_mul_equiv_of_localizations_eq_iff_eq Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eq
+#align add_submonoid.localization_map.of_add_equiv_of_localizations_eq_iff_eq AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_eq_iff_eq
 
 @[to_additive addEquivOfLocalizations_right_inv]
 theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S P) :
@@ -1474,10 +1457,8 @@ theorem mulEquivOfLocalizations_right_inv (k : LocalizationMap S P) :
 @[to_additive addEquivOfLocalizations_right_inv_apply]
 theorem mulEquivOfLocalizations_right_inv_apply {k : LocalizationMap S P} {x} :
     (f.ofMulEquivOfLocalizations (f.mulEquivOfLocalizations k)).toMap x = k.toMap x := by simp
-#align submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply
-  Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_apply
-#align add_submonoid.localization_map.add_equiv_of_localizations_right_inv_apply
-  AddSubmonoid.LocalizationMap.addEquivOfLocalizations_right_inv_apply
+#align submonoid.localization_map.mul_equiv_of_localizations_right_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_right_inv_apply
+#align add_submonoid.localization_map.add_equiv_of_localizations_right_inv_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_right_inv_apply
 
 @[to_additive]
 theorem mulEquivOfLocalizations_left_inv (k : N ≃* P) :
@@ -1492,28 +1473,22 @@ theorem mulEquivOfLocalizations_left_inv (k : N ≃* P) :
 @[to_additive]
 theorem mulEquivOfLocalizations_left_inv_apply {k : N ≃* P} (x) :
     f.mulEquivOfLocalizations (f.ofMulEquivOfLocalizations k) x = k x := by simp
-#align submonoid.localization_map.mul_equiv_of_localizations_left_inv_apply
-  Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv_apply
-#align add_submonoid.localization_map.add_equiv_of_localizations_left_neg_apply
-  AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg_apply
+#align submonoid.localization_map.mul_equiv_of_localizations_left_inv_apply Submonoid.LocalizationMap.mulEquivOfLocalizations_left_inv_apply
+#align add_submonoid.localization_map.add_equiv_of_localizations_left_neg_apply AddSubmonoid.LocalizationMap.addEquivOfLocalizations_left_neg_apply
 
 @[to_additive (attr := simp)]
 theorem ofMulEquivOfLocalizations_id : f.ofMulEquivOfLocalizations (MulEquiv.refl N) = f := by
   ext ; rfl
-#align submonoid.localization_map.of_mul_equiv_of_localizations_id
-  Submonoid.LocalizationMap.ofMulEquivOfLocalizations_id
-#align add_submonoid.localization_map.of_add_equiv_of_localizations_id
-  AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_id
+#align submonoid.localization_map.of_mul_equiv_of_localizations_id Submonoid.LocalizationMap.ofMulEquivOfLocalizations_id
+#align add_submonoid.localization_map.of_add_equiv_of_localizations_id AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_id
 
 @[to_additive]
 theorem ofMulEquivOfLocalizations_comp {k : N ≃* P} {j : P ≃* Q} :
     (f.ofMulEquivOfLocalizations (k.trans j)).toMap =
       j.toMonoidHom.comp (f.ofMulEquivOfLocalizations k).toMap :=
   by ext ; rfl
-#align submonoid.localization_map.of_mul_equiv_of_localizations_comp
-  Submonoid.LocalizationMap.ofMulEquivOfLocalizations_comp
-#align add_submonoid.localization_map.of_add_equiv_of_localizations_comp
-  AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_comp
+#align submonoid.localization_map.of_mul_equiv_of_localizations_comp Submonoid.LocalizationMap.ofMulEquivOfLocalizations_comp
+#align add_submonoid.localization_map.of_add_equiv_of_localizations_comp AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_comp
 
 /-- Given `CommMonoid`s `M, P` and Submonoids `S ⊆ M, T ⊆ P`, if `f : M →* N` is a Localization
 map for `S` and `k : P ≃* M` is an isomorphism of `CommMonoid`s such that `k(T) = S`, `f ∘ k`
@@ -1570,18 +1545,14 @@ theorem ofMulEquivOfDom_eq {k : P ≃* M} (H : T.map k.toMonoidHom = S) :
 theorem ofMulEquivOfDom_comp_symm {k : P ≃* M} (H : T.map k.toMonoidHom = S) (x) :
     (f.ofMulEquivOfDom H).toMap (k.symm x) = f.toMap x :=
   congr_arg f.toMap <| k.apply_symm_apply x
-#align submonoid.localization_map.of_mul_equiv_of_dom_comp_symm
-  Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symm
-#align add_submonoid.localization_map.of_add_equiv_of_dom_comp_symm
-  AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp_symm
+#align submonoid.localization_map.of_mul_equiv_of_dom_comp_symm Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symm
+#align add_submonoid.localization_map.of_add_equiv_of_dom_comp_symm AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp_symm
 
 @[to_additive]
 theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) (x) :
     (f.ofMulEquivOfDom H).toMap (k x) = f.toMap x := congr_arg f.toMap <| k.symm_apply_apply x
-#align submonoid.localization_map.of_mul_equiv_of_dom_comp
-  Submonoid.LocalizationMap.ofMulEquivOfDom_comp
-#align add_submonoid.localization_map.of_add_equiv_of_dom_comp
-  AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp
+#align submonoid.localization_map.of_mul_equiv_of_dom_comp Submonoid.LocalizationMap.ofMulEquivOfDom_comp
+#align add_submonoid.localization_map.of_add_equiv_of_dom_comp AddSubmonoid.LocalizationMap.ofAddEquivOfDom_comp
 
 /-- A special case of `f ∘ id = f`, `f` a Localization map. -/
 @[to_additive (attr := simp) "A special case of `f ∘ id = f`, `f` a Localization map."]
@@ -1590,10 +1561,8 @@ theorem ofMulEquivOfDom_id :
         (show S.map (MulEquiv.refl M).toMonoidHom = S from
           Submonoid.ext fun x ↦ ⟨fun ⟨_, hy, h⟩ ↦ h ▸ hy, fun h ↦ ⟨x, h, rfl⟩⟩) = f :=
   by ext ; rfl
-#align submonoid.localization_map.of_mul_equiv_of_dom_id
-  Submonoid.LocalizationMap.ofMulEquivOfDom_id
-#align add_submonoid.localization_map.of_add_equiv_of_dom_id
-  AddSubmonoid.LocalizationMap.ofAddEquivOfDom_id
+#align submonoid.localization_map.of_mul_equiv_of_dom_id Submonoid.LocalizationMap.ofMulEquivOfDom_id
+#align add_submonoid.localization_map.of_add_equiv_of_dom_id AddSubmonoid.LocalizationMap.ofAddEquivOfDom_id
 
 /-- Given Localization maps `f : M →* N, k : P →* U` for Submonoids `S, T` respectively, an
 isomorphism `j : M ≃* P` such that `j(S) = T` induces an isomorphism of localizations `N ≃* U`. -/
@@ -1662,10 +1631,8 @@ theorem of_mulEquivOfMulEquiv_apply {k : LocalizationMap T Q} {j : M ≃* P}
 theorem of_mulEquivOfMulEquiv {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T) :
     (f.ofMulEquivOfLocalizations (f.mulEquivOfMulEquiv k H)).toMap = k.toMap.comp j.toMonoidHom :=
   MonoidHom.ext <| f.of_mulEquivOfMulEquiv_apply H
-#align submonoid.localization_map.of_mul_equiv_of_mul_equiv
-  Submonoid.LocalizationMap.of_mulEquivOfMulEquiv
-#align add_submonoid.localization_map.of_add_equiv_of_add_equiv
-  AddSubmonoid.LocalizationMap.of_addEquivOfAddEquiv
+#align submonoid.localization_map.of_mul_equiv_of_mul_equiv Submonoid.LocalizationMap.of_mulEquivOfMulEquiv
+#align add_submonoid.localization_map.of_add_equiv_of_add_equiv AddSubmonoid.LocalizationMap.of_addEquivOfAddEquiv
 
 end LocalizationMap
 
@@ -1796,10 +1763,8 @@ theorem mulEquivOfQuotient_symm_mk (x y) : (mulEquivOfQuotient f).symm (f.mk' x
 theorem mulEquivOfQuotient_symm_monoidOf (x) :
     (mulEquivOfQuotient f).symm (f.toMap x) = (monoidOf S).toMap x :=
   f.lift_eq (monoidOf S).map_units _
-#align localization.mul_equiv_of_quotient_symm_monoid_of
-  Localization.mulEquivOfQuotient_symm_monoidOf
-#align add_localization.add_equiv_of_quotient_symm_add_monoid_of
-  addLocalization.addEquivOfQuotient_symm_addMonoidOf
+#align localization.mul_equiv_of_quotient_symm_monoid_of Localization.mulEquivOfQuotient_symm_monoidOf
+#align add_localization.add_equiv_of_quotient_symm_add_monoid_of addLocalization.addEquivOfQuotient_symm_addMonoidOf
 
 section Away
 
feat: improvements to congr! and convert (#2606)
  • There is now configuration for congr!, convert, and convert_to to control parts of the congruence algorithm, in particular transparency settings when applying congruence lemmas.
  • congr! now applies congruence lemmas with reducible transparency by default. This prevents it from unfolding definitions when applying congruence lemmas. It also now tries both the LHS-biased and RHS-biased simp congruence lemmas, with a configuration option to set which it should try first.
  • There is now a new HEq congruence lemma generator that gives each hypothesis access to the proofs of previous hypotheses. This means that if you have an equality ⊢ ⟨a, x⟩ = ⟨b, y⟩ of sigma types, congr! turns this into goals ⊢ a = b and ⊢ a = b → HEq x y (note that congr! will also auto-introduce a = b for you in the second goal). This congruence lemma generator applies to more cases than the simp congruence lemma generator does.
  • congr! (and hence convert) are more careful about applying lemmas that don't force definitions to unfold. There were a number of cases in mathlib where the implementation of congr was being abused to unfold definitions.
  • With set_option trace.congr! true you can see what congr! sees when it is deciding on congruence lemmas.
  • There is also a bug fix in convert_to to do using 1 when there is no using clause, to match its documentation.

Note that congr! is more capable than congr at finding a way to equate left-hand sides and right-hand sides, so you will frequently need to limit its depth with a using clause. However, there is also a new heuristic to prevent considering unlikely-to-be-provable type equalities (controlled by the typeEqs option), which can help limit the depth automatically.

There is also a predefined configuration that you can invoke with, for example, convert (config := .unfoldSameFun) h, that causes it to behave more like congr, including using default transparency when unfolding.

Diff
@@ -186,7 +186,6 @@ theorem r_eq_r' : r S = r' S :=
       convert b.symm (b.mul (H (t * q)) (b.refl (x, y))) using 1
       dsimp only [Prod.mk_mul_mk, Submonoid.coe_mul] at ht ⊢
       simp_rw [mul_assoc, ht, mul_comm y q]
-      rfl
 #align localization.r_eq_r' Localization.r_eq_r'
 #align add_localization.r_eq_r' addLocalization.r_eq_r'
 
Fix: Move more attributes to the attr argument of to_additive (#2558)
Diff
@@ -352,13 +352,13 @@ theorem liftOn_mk {p : Sort u} (f : ∀ (_a : M) (_b : S), p) (H) (a : M) (b : S
 #align localization.lift_on_mk Localization.liftOn_mk
 #align add_localization.lift_on_mk addLocalization.liftOn_mk
 
-@[elab_as_elim, to_additive]
+@[to_additive (attr := elab_as_elim)]
 theorem ind {p : Localization S → Prop} (H : ∀ y : M × S, p (mk y.1 y.2)) (x) : p x :=
   rec (fun a b ↦ H (a, b)) (fun _ ↦ rfl) x
 #align localization.ind Localization.ind
 #align add_localization.ind addLocalization.ind
 
-@[elab_as_elim, to_additive]
+@[to_additive (attr := elab_as_elim)]
 theorem induction_on {p : Localization S → Prop} (x) (H : ∀ y : M × S, p (mk y.1 y.2)) : p x :=
   ind H x
 #align localization.induction_on Localization.induction_on
@@ -387,14 +387,14 @@ theorem liftOn₂_mk {p : Sort _} (f : M → S → M → S → p) (H) (a c : M)
 #align localization.lift_on₂_mk Localization.liftOn₂_mk
 #align add_localization.lift_on₂_mk addLocalization.liftOn₂_mk
 
-@[elab_as_elim, to_additive]
+@[to_additive (attr := elab_as_elim)]
 theorem induction_on₂ {p : Localization S → Localization S → Prop} (x y)
     (H : ∀ x y : M × S, p (mk x.1 x.2) (mk y.1 y.2)) : p x y :=
   induction_on x fun x ↦ induction_on y <| H x
 #align localization.induction_on₂ Localization.induction_on₂
 #align add_localization.induction_on₂ addLocalization.induction_on₂
 
-@[elab_as_elim, to_additive]
+@[to_additive (attr := elab_as_elim)]
 theorem induction_on₃ {p : Localization S → Localization S → Localization S → Prop} (x y z)
     (H : ∀ x y z : M × S, p (mk x.1 x.2) (mk y.1 y.2) (mk z.1 z.2)) : p x y z :=
   induction_on₂ x y fun x y ↦ induction_on z <| H x y
chore: mathlib4-ify names (#2557)

is_scalar_tower is now IsScalarTower etc.

As discussed on Zulip, this also renames sMulCommClass to smulCommClass. The later was already the majority spelling.

Diff
@@ -437,7 +437,7 @@ protected def smul [SMul R M] [IsScalarTower R M M] (c : R) (z : Localization S)
         cases' h with t ht
         use t
         dsimp only [Subtype.coe_mk] at ht ⊢
--- TODO: this definition should take `smul_comm_class R M M` instead of `is_scalar_tower R M M` if
+-- TODO: this definition should take `SMulCommClass R M M` instead of `IsScalarTower R M M` if
 -- we ever want to generalize to the non-commutative case.
         haveI : SMulCommClass R M M :=
           ⟨fun r m₁ m₂ ↦ by simp_rw [smul_eq_mul, mul_comm m₁, smul_mul_assoc]⟩
@@ -461,7 +461,7 @@ instance [SMul R₁ M] [SMul R₂ M] [IsScalarTower R₁ M M] [IsScalarTower R
   [IsScalarTower R₁ R₂ M] : IsScalarTower R₁ R₂ (Localization S) where
   smul_assoc s t := Localization.ind <| Prod.rec fun r x ↦ by simp only [smul_mk, smul_assoc s t r]
 
-instance sMulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
+instance smulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
   SMulCommClass R (Localization S) (Localization S) where
   smul_comm s :=
       Localization.ind <|
@@ -469,7 +469,7 @@ instance sMulCommClass_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
           Localization.ind <|
             Prod.rec fun r₂ x₂ ↦ by
               simp only [smul_mk, smul_eq_mul, mk_mul, mul_comm r₁, smul_mul_assoc]
-#align localization.smul_comm_class_right Localization.sMulCommClass_right
+#align localization.smul_comm_class_right Localization.smulCommClass_right
 
 instance isScalarTower_right {R : Type _} [SMul R M] [IsScalarTower R M M] :
   IsScalarTower R (Localization S) (Localization S) where
feat: port GroupTheory.Monoid.Localization (#1777)

Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com>

Dependencies 4 + 219

220 files ported (98.2%)
101781 lines ported (98.9%)
Show graph

The unported dependencies are