algebra.ring.equivMathlib.Algebra.Ring.Equiv

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)

(last sync)

feat(number_theory/number_field/units): add is_unit_iff_norm (#18866)

This PR creates the file number_theory/number_field/units.lean and proves the result :

lemma is_unit_iff_norm [number_field K] (x : 𝓞 K) :
  is_unit x ↔ abs (ring_of_integers.norm ℚ x : ℚ) = 1 
Diff
@@ -392,6 +392,9 @@ variables [non_assoc_ring R] [non_assoc_ring S] (f : R ≃+* S) (x y : R)
 
 @[simp] lemma map_neg_one : f (-1) = -1 := f.map_one ▸ f.map_neg 1
 
+lemma map_eq_neg_one_iff {x : R} : f x = -1 ↔ x = -1 :=
+by rw [← neg_eq_iff_eq_neg, ← neg_eq_iff_eq_neg, ← map_neg, ring_equiv.map_eq_one_iff]
+
 end ring
 
 section non_unital_semiring_hom

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 -/
 import Algebra.Group.Opposite
-import Algebra.Hom.Ring
+import Algebra.Ring.Hom.Defs
 import Logic.Equiv.Set
 import Tactic.AssertExists
 
Diff
@@ -87,7 +87,7 @@ instance (priority := 100) toRingHomClass (F R S : Type _) [NonAssocSemiring R]
     [h : RingEquivClass F R S] : RingHomClass F R S :=
   { h with
     coe := coeFn
-    coe_injective' := FunLike.coe_injective
+    coe_injective' := DFunLike.coe_injective
     map_zero := map_zero
     map_one := map_one }
 #align ring_equiv_class.to_ring_hom_class RingEquivClass.toRingHomClass
@@ -99,7 +99,7 @@ instance (priority := 100) toNonUnitalRingHomClass (F R S : Type _) [NonUnitalNo
     [NonUnitalNonAssocSemiring S] [h : RingEquivClass F R S] : NonUnitalRingHomClass F R S :=
   { h with
     coe := coeFn
-    coe_injective' := FunLike.coe_injective
+    coe_injective' := DFunLike.coe_injective
     map_zero := map_zero }
 #align ring_equiv_class.to_non_unital_ring_hom_class RingEquivClass.toNonUnitalRingHomClass
 -/
@@ -171,7 +171,7 @@ protected theorem map_add (e : R ≃+* S) (x y : R) : e (x + y) = e x + e y :=
     same underlying function. -/
 @[ext]
 theorem ext {f g : R ≃+* S} (h : ∀ x, f x = g x) : f = g :=
-  FunLike.ext f g h
+  DFunLike.ext f g h
 #align ring_equiv.ext RingEquiv.ext
 -/
 
@@ -189,19 +189,19 @@ theorem mk_coe (e : R ≃+* S) (e' h₁ h₂ h₃ h₄) : (⟨e, e', h₁, h₂,
 
 #print RingEquiv.congr_arg /-
 protected theorem congr_arg {f : R ≃+* S} {x x' : R} : x = x' → f x = f x' :=
-  FunLike.congr_arg f
+  DFunLike.congr_arg f
 #align ring_equiv.congr_arg RingEquiv.congr_arg
 -/
 
 #print RingEquiv.congr_fun /-
 protected theorem congr_fun {f g : R ≃+* S} (h : f = g) (x : R) : f x = g x :=
-  FunLike.congr_fun h x
+  DFunLike.congr_fun h x
 #align ring_equiv.congr_fun RingEquiv.congr_fun
 -/
 
 #print RingEquiv.ext_iff /-
 protected theorem ext_iff {f g : R ≃+* S} : f = g ↔ ∀ x, f x = g x :=
-  FunLike.ext_iff
+  DFunLike.ext_iff
 #align ring_equiv.ext_iff RingEquiv.ext_iff
 -/
 
@@ -963,8 +963,8 @@ def ofHomInv' {R S F G : Type _} [NonUnitalNonAssocSemiring R] [NonUnitalNonAsso
     where
   toFun := hom
   invFun := inv
-  left_inv := FunLike.congr_fun hom_inv_id
-  right_inv := FunLike.congr_fun inv_hom_id
+  left_inv := DFunLike.congr_fun hom_inv_id
+  right_inv := DFunLike.congr_fun inv_hom_id
   map_mul' := map_mul hom
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv' RingEquiv.ofHomInv'
@@ -982,8 +982,8 @@ def ofHomInv {R S F G : Type _} [NonAssocSemiring R] [NonAssocSemiring S] [RingH
     where
   toFun := hom
   invFun := inv
-  left_inv := FunLike.congr_fun hom_inv_id
-  right_inv := FunLike.congr_fun inv_hom_id
+  left_inv := DFunLike.congr_fun hom_inv_id
+  right_inv := DFunLike.congr_fun inv_hom_id
   map_mul' := map_mul hom
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv RingEquiv.ofHomInv
Diff
@@ -3,10 +3,10 @@ Copyright (c) 2018 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 -/
-import Mathbin.Algebra.Group.Opposite
-import Mathbin.Algebra.Hom.Ring
-import Mathbin.Logic.Equiv.Set
-import Mathbin.Tactic.AssertExists
+import Algebra.Group.Opposite
+import Algebra.Hom.Ring
+import Logic.Equiv.Set
+import Tactic.AssertExists
 
 #align_import algebra.ring.equiv from "leanprover-community/mathlib"@"00f91228655eecdcd3ac97a7fd8dbcb139fe990a"
 
Diff
@@ -1047,7 +1047,6 @@ theorem symm_trans_self (e : R ≃+* S) : e.symm.trans e = RingEquiv.refl S :=
 #align ring_equiv.symm_trans_self RingEquiv.symm_trans_self
 -/
 
-#print RingEquiv.noZeroDivisors /-
 /-- If two rings are isomorphic, and the second doesn't have zero divisors,
 then so does the first. -/
 protected theorem noZeroDivisors {A : Type _} (B : Type _) [Ring A] [Ring B] [NoZeroDivisors B]
@@ -1058,9 +1057,7 @@ protected theorem noZeroDivisors {A : Type _} (B : Type _) [Ring A] [Ring B] [No
       have : e x * e y = 0 := by rw [← e.map_mul, hxy, e.map_zero]
       simpa using eq_zero_or_eq_zero_of_mul_eq_zero this }
 #align ring_equiv.no_zero_divisors RingEquiv.noZeroDivisors
--/
 
-#print RingEquiv.isDomain /-
 /-- If two rings are isomorphic, and the second is a domain, then so is the first. -/
 protected theorem isDomain {A : Type _} (B : Type _) [Ring A] [Ring B] [IsDomain B] (e : A ≃+* B) :
     IsDomain A :=
@@ -1069,7 +1066,6 @@ protected theorem isDomain {A : Type _} (B : Type _) [Ring A] [Ring B] [IsDomain
   haveI := e.no_zero_divisors B
   exact NoZeroDivisors.to_isDomain _
 #align ring_equiv.is_domain RingEquiv.isDomain
--/
 
 end RingEquiv
 
Diff
@@ -126,7 +126,7 @@ instance : RingEquivClass (R ≃+* S) R S where
   inv := invFun
   coe_injective' e f h₁ h₂ := by cases e; cases f; congr
   map_add := map_add'
-  map_mul := map_mul'
+  map_hMul := map_mul'
   left_inv := RingEquiv.left_inv
   right_inv := RingEquiv.right_inv
 
Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2018 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
-
-! This file was ported from Lean 3 source module algebra.ring.equiv
-! leanprover-community/mathlib commit 00f91228655eecdcd3ac97a7fd8dbcb139fe990a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Group.Opposite
 import Mathbin.Algebra.Hom.Ring
 import Mathbin.Logic.Equiv.Set
 import Mathbin.Tactic.AssertExists
 
+#align_import algebra.ring.equiv from "leanprover-community/mathlib"@"00f91228655eecdcd3ac97a7fd8dbcb139fe990a"
+
 /-!
 # (Semi)ring equivs
 
Diff
@@ -738,13 +738,11 @@ theorem toNonUnitalRingHom_injective :
 #align ring_equiv.to_non_unital_ring_hom_injective RingEquiv.toNonUnitalRingHom_injective
 -/
 
-#print RingEquiv.instCoeToNonUnitalRingHom /-
 /- The instance priority is lowered here so that in the case when `R` and `S` are both unital, Lean
 will first find and use `ring_equiv.has_coe_to_ring_hom`. -/
-instance (priority := 900) instCoeToNonUnitalRingHom : Coe (R ≃+* S) (R →ₙ+* S) :=
+instance (priority := 900) hasCoeToNonUnitalRingHom : Coe (R ≃+* S) (R →ₙ+* S) :=
   ⟨RingEquiv.toNonUnitalRingHom⟩
-#align ring_equiv.has_coe_to_non_unital_ring_hom RingEquiv.instCoeToNonUnitalRingHom
--/
+#align ring_equiv.has_coe_to_non_unital_ring_hom RingEquiv.hasCoeToNonUnitalRingHom
 
 #print RingEquiv.toNonUnitalRingHom_eq_coe /-
 theorem toNonUnitalRingHom_eq_coe (f : R ≃+* S) : f.toNonUnitalRingHom = ↑f :=
@@ -830,11 +828,9 @@ theorem toRingHom_injective : Function.Injective (toRingHom : R ≃+* S → R 
 #align ring_equiv.to_ring_hom_injective RingEquiv.toRingHom_injective
 -/
 
-#print RingEquiv.instCoeToRingHom /-
-instance instCoeToRingHom : Coe (R ≃+* S) (R →+* S) :=
+instance hasCoeToRingHom : Coe (R ≃+* S) (R →+* S) :=
   ⟨RingEquiv.toRingHom⟩
-#align ring_equiv.has_coe_to_ring_hom RingEquiv.instCoeToRingHom
--/
+#align ring_equiv.has_coe_to_ring_hom RingEquiv.hasCoeToRingHom
 
 #print RingEquiv.toRingHom_eq_coe /-
 theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
Diff
@@ -47,12 +47,13 @@ equiv, mul_equiv, add_equiv, ring_equiv, mul_aut, add_aut, ring_aut
 
 variable {F α β R S S' : Type _}
 
+#print RingEquiv /-
 /-- An equivalence between two (non-unital non-associative semi)rings that preserves the
 algebraic structure. -/
 structure RingEquiv (R S : Type _) [Mul R] [Add R] [Mul S] [Add S] extends R ≃ S, R ≃* S, R ≃+ S
 #align ring_equiv RingEquiv
+-/
 
--- mathport name: «expr ≃+* »
 infixl:25 " ≃+* " => RingEquiv
 
 /-- The "plain" equivalence of types underlying an equivalence of (semi)rings. -/
@@ -83,6 +84,7 @@ instance (priority := 100) toAddEquivClass (F R S : Type _) [Mul R] [Add R] [Mul
 #align ring_equiv_class.to_add_equiv_class RingEquivClass.toAddEquivClass
 -/
 
+#print RingEquivClass.toRingHomClass /-
 -- See note [lower instance priority]
 instance (priority := 100) toRingHomClass (F R S : Type _) [NonAssocSemiring R] [NonAssocSemiring S]
     [h : RingEquivClass F R S] : RingHomClass F R S :=
@@ -92,7 +94,9 @@ instance (priority := 100) toRingHomClass (F R S : Type _) [NonAssocSemiring R]
     map_zero := map_zero
     map_one := map_one }
 #align ring_equiv_class.to_ring_hom_class RingEquivClass.toRingHomClass
+-/
 
+#print RingEquivClass.toNonUnitalRingHomClass /-
 -- See note [lower instance priority]
 instance (priority := 100) toNonUnitalRingHomClass (F R S : Type _) [NonUnitalNonAssocSemiring R]
     [NonUnitalNonAssocSemiring S] [h : RingEquivClass F R S] : NonUnitalRingHomClass F R S :=
@@ -101,6 +105,7 @@ instance (priority := 100) toNonUnitalRingHomClass (F R S : Type _) [NonUnitalNo
     coe_injective' := FunLike.coe_injective
     map_zero := map_zero }
 #align ring_equiv_class.to_non_unital_ring_hom_class RingEquivClass.toNonUnitalRingHomClass
+-/
 
 end RingEquivClass
 
@@ -131,84 +136,112 @@ instance : RingEquivClass (R ≃+* S) R S where
 instance : CoeFun (R ≃+* S) fun _ => R → S :=
   ⟨RingEquiv.toFun⟩
 
+#print RingEquiv.toEquiv_eq_coe /-
 @[simp]
 theorem toEquiv_eq_coe (f : R ≃+* S) : f.toEquiv = f :=
   rfl
 #align ring_equiv.to_equiv_eq_coe RingEquiv.toEquiv_eq_coe
+-/
 
 @[simp]
 theorem toFun_eq_coe (f : R ≃+* S) : f.toFun = f :=
   rfl
 #align ring_equiv.to_fun_eq_coe RingEquiv.toFun_eq_coe
 
+#print RingEquiv.coe_toEquiv /-
 @[simp]
 theorem coe_toEquiv (f : R ≃+* S) : ⇑(f : R ≃ S) = f :=
   rfl
 #align ring_equiv.coe_to_equiv RingEquiv.coe_toEquiv
+-/
 
+#print RingEquiv.map_mul /-
 /-- A ring isomorphism preserves multiplication. -/
 protected theorem map_mul (e : R ≃+* S) (x y : R) : e (x * y) = e x * e y :=
   map_mul e x y
 #align ring_equiv.map_mul RingEquiv.map_mul
+-/
 
+#print RingEquiv.map_add /-
 /-- A ring isomorphism preserves addition. -/
 protected theorem map_add (e : R ≃+* S) (x y : R) : e (x + y) = e x + e y :=
   map_add e x y
 #align ring_equiv.map_add RingEquiv.map_add
+-/
 
+#print RingEquiv.ext /-
 /-- Two ring isomorphisms agree if they are defined by the
     same underlying function. -/
 @[ext]
 theorem ext {f g : R ≃+* S} (h : ∀ x, f x = g x) : f = g :=
   FunLike.ext f g h
 #align ring_equiv.ext RingEquiv.ext
+-/
 
 @[simp]
 theorem coe_mk (e e' h₁ h₂ h₃ h₄) : ⇑(⟨e, e', h₁, h₂, h₃, h₄⟩ : R ≃+* S) = e :=
   rfl
 #align ring_equiv.coe_mk RingEquiv.coe_mkₓ
 
+#print RingEquiv.mk_coe /-
 @[simp]
 theorem mk_coe (e : R ≃+* S) (e' h₁ h₂ h₃ h₄) : (⟨e, e', h₁, h₂, h₃, h₄⟩ : R ≃+* S) = e :=
   ext fun _ => rfl
 #align ring_equiv.mk_coe RingEquiv.mk_coe
+-/
 
+#print RingEquiv.congr_arg /-
 protected theorem congr_arg {f : R ≃+* S} {x x' : R} : x = x' → f x = f x' :=
   FunLike.congr_arg f
 #align ring_equiv.congr_arg RingEquiv.congr_arg
+-/
 
+#print RingEquiv.congr_fun /-
 protected theorem congr_fun {f g : R ≃+* S} (h : f = g) (x : R) : f x = g x :=
   FunLike.congr_fun h x
 #align ring_equiv.congr_fun RingEquiv.congr_fun
+-/
 
+#print RingEquiv.ext_iff /-
 protected theorem ext_iff {f g : R ≃+* S} : f = g ↔ ∀ x, f x = g x :=
   FunLike.ext_iff
 #align ring_equiv.ext_iff RingEquiv.ext_iff
+-/
 
+#print RingEquiv.toAddEquiv_eq_coe /-
 @[simp]
 theorem toAddEquiv_eq_coe (f : R ≃+* S) : f.toAddEquiv = ↑f :=
   rfl
 #align ring_equiv.to_add_equiv_eq_coe RingEquiv.toAddEquiv_eq_coe
+-/
 
+#print RingEquiv.toMulEquiv_eq_coe /-
 @[simp]
 theorem toMulEquiv_eq_coe (f : R ≃+* S) : f.toMulEquiv = ↑f :=
   rfl
 #align ring_equiv.to_mul_equiv_eq_coe RingEquiv.toMulEquiv_eq_coe
+-/
 
+#print RingEquiv.coe_toMulEquiv /-
 @[simp, norm_cast]
 theorem coe_toMulEquiv (f : R ≃+* S) : ⇑(f : R ≃* S) = f :=
   rfl
 #align ring_equiv.coe_to_mul_equiv RingEquiv.coe_toMulEquiv
+-/
 
+#print RingEquiv.coe_toAddEquiv /-
 @[simp, norm_cast]
 theorem coe_toAddEquiv (f : R ≃+* S) : ⇑(f : R ≃+ S) = f :=
   rfl
 #align ring_equiv.coe_to_add_equiv RingEquiv.coe_toAddEquiv
+-/
 
+#print RingEquiv.ringEquivOfUnique /-
 /-- The `ring_equiv` between two semirings with a unique element. -/
 def ringEquivOfUnique {M N} [Unique M] [Unique N] [Add M] [Mul M] [Add N] [Mul N] : M ≃+* N :=
   { AddEquiv.addEquivOfUnique, MulEquiv.mulEquivOfUnique with }
 #align ring_equiv.ring_equiv_of_unique RingEquiv.ringEquivOfUnique
+-/
 
 instance {M N} [Unique M] [Unique N] [Add M] [Mul M] [Add N] [Mul N] : Unique (M ≃+* N)
     where
@@ -217,11 +250,13 @@ instance {M N} [Unique M] [Unique N] [Add M] [Mul M] [Add N] [Mul N] : Unique (M
 
 variable (R)
 
+#print RingEquiv.refl /-
 /-- The identity map is a ring isomorphism. -/
 @[refl]
 protected def refl : R ≃+* R :=
   { MulEquiv.refl R, AddEquiv.refl R with }
 #align ring_equiv.refl RingEquiv.refl
+-/
 
 #print RingEquiv.refl_apply /-
 @[simp]
@@ -230,59 +265,78 @@ theorem refl_apply (x : R) : RingEquiv.refl R x = x :=
 #align ring_equiv.refl_apply RingEquiv.refl_apply
 -/
 
+#print RingEquiv.coe_addEquiv_refl /-
 @[simp]
 theorem coe_addEquiv_refl : (RingEquiv.refl R : R ≃+ R) = AddEquiv.refl R :=
   rfl
 #align ring_equiv.coe_add_equiv_refl RingEquiv.coe_addEquiv_refl
+-/
 
+#print RingEquiv.coe_mulEquiv_refl /-
 @[simp]
 theorem coe_mulEquiv_refl : (RingEquiv.refl R : R ≃* R) = MulEquiv.refl R :=
   rfl
 #align ring_equiv.coe_mul_equiv_refl RingEquiv.coe_mulEquiv_refl
+-/
 
 instance : Inhabited (R ≃+* R) :=
   ⟨RingEquiv.refl R⟩
 
 variable {R}
 
+#print RingEquiv.symm /-
 /-- The inverse of a ring isomorphism is a ring isomorphism. -/
 @[symm]
 protected def symm (e : R ≃+* S) : S ≃+* R :=
   { e.toMulEquiv.symm, e.toAddEquiv.symm with }
 #align ring_equiv.symm RingEquiv.symm
+-/
 
+#print RingEquiv.Simps.symm_apply /-
 /-- See Note [custom simps projection] -/
 def Simps.symm_apply (e : R ≃+* S) : S → R :=
   e.symm
 #align ring_equiv.simps.symm_apply RingEquiv.Simps.symm_apply
+-/
 
 initialize_simps_projections RingEquiv (toFun → apply, invFun → symm_apply)
 
+#print RingEquiv.invFun_eq_symm /-
 @[simp]
 theorem invFun_eq_symm (f : R ≃+* S) : f.invFun = f.symm :=
   rfl
 #align ring_equiv.inv_fun_eq_symm RingEquiv.invFun_eq_symm
+-/
 
+#print RingEquiv.symm_symm /-
 @[simp]
 theorem symm_symm (e : R ≃+* S) : e.symm.symm = e :=
   ext fun x => rfl
 #align ring_equiv.symm_symm RingEquiv.symm_symm
+-/
 
+#print RingEquiv.coe_toEquiv_symm /-
 @[simp]
 theorem coe_toEquiv_symm (e : R ≃+* S) : (e.symm : S ≃ R) = (e : R ≃ S).symm :=
   rfl
 #align ring_equiv.coe_to_equiv_symm RingEquiv.coe_toEquiv_symm
+-/
 
+#print RingEquiv.symm_bijective /-
 theorem symm_bijective : Function.Bijective (RingEquiv.symm : R ≃+* S → S ≃+* R) :=
   Equiv.bijective ⟨RingEquiv.symm, RingEquiv.symm, symm_symm, symm_symm⟩
 #align ring_equiv.symm_bijective RingEquiv.symm_bijective
+-/
 
+#print RingEquiv.mk_coe' /-
 @[simp]
 theorem mk_coe' (e : R ≃+* S) (f h₁ h₂ h₃ h₄) :
     (RingEquiv.mk f (⇑e) h₁ h₂ h₃ h₄ : S ≃+* R) = e.symm :=
   symm_bijective.Injective <| ext fun x => rfl
 #align ring_equiv.mk_coe' RingEquiv.mk_coe'
+-/
 
+#print RingEquiv.symm_mk /-
 @[simp]
 theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
     (mk f g h₁ h₂ h₃ h₄).symm =
@@ -291,69 +345,96 @@ theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
         invFun := f } :=
   rfl
 #align ring_equiv.symm_mk RingEquiv.symm_mk
+-/
 
+#print RingEquiv.trans /-
 /-- Transitivity of `ring_equiv`. -/
 @[trans]
 protected def trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') : R ≃+* S' :=
   { e₁.toMulEquiv.trans e₂.toMulEquiv, e₁.toAddEquiv.trans e₂.toAddEquiv with }
 #align ring_equiv.trans RingEquiv.trans
+-/
 
+#print RingEquiv.trans_apply /-
 theorem trans_apply (e₁ : R ≃+* S) (e₂ : S ≃+* S') (a : R) : e₁.trans e₂ a = e₂ (e₁ a) :=
   rfl
 #align ring_equiv.trans_apply RingEquiv.trans_apply
+-/
 
+#print RingEquiv.coe_trans /-
 @[simp]
 theorem coe_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') : (e₁.trans e₂ : R → S') = e₂ ∘ e₁ :=
   rfl
 #align ring_equiv.coe_trans RingEquiv.coe_trans
+-/
 
+#print RingEquiv.symm_trans_apply /-
 @[simp]
 theorem symm_trans_apply (e₁ : R ≃+* S) (e₂ : S ≃+* S') (a : S') :
     (e₁.trans e₂).symm a = e₁.symm (e₂.symm a) :=
   rfl
 #align ring_equiv.symm_trans_apply RingEquiv.symm_trans_apply
+-/
 
+#print RingEquiv.symm_trans /-
 theorem symm_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') : (e₁.trans e₂).symm = e₂.symm.trans e₁.symm :=
   rfl
 #align ring_equiv.symm_trans RingEquiv.symm_trans
+-/
 
+#print RingEquiv.bijective /-
 protected theorem bijective (e : R ≃+* S) : Function.Bijective e :=
   EquivLike.bijective e
 #align ring_equiv.bijective RingEquiv.bijective
+-/
 
+#print RingEquiv.injective /-
 protected theorem injective (e : R ≃+* S) : Function.Injective e :=
   EquivLike.injective e
 #align ring_equiv.injective RingEquiv.injective
+-/
 
+#print RingEquiv.surjective /-
 protected theorem surjective (e : R ≃+* S) : Function.Surjective e :=
   EquivLike.surjective e
 #align ring_equiv.surjective RingEquiv.surjective
+-/
 
+#print RingEquiv.apply_symm_apply /-
 @[simp]
 theorem apply_symm_apply (e : R ≃+* S) : ∀ x, e (e.symm x) = x :=
   e.toEquiv.apply_symm_apply
 #align ring_equiv.apply_symm_apply RingEquiv.apply_symm_apply
+-/
 
+#print RingEquiv.symm_apply_apply /-
 @[simp]
 theorem symm_apply_apply (e : R ≃+* S) : ∀ x, e.symm (e x) = x :=
   e.toEquiv.symm_apply_apply
 #align ring_equiv.symm_apply_apply RingEquiv.symm_apply_apply
+-/
 
+#print RingEquiv.image_eq_preimage /-
 theorem image_eq_preimage (e : R ≃+* S) (s : Set R) : e '' s = e.symm ⁻¹' s :=
   e.toEquiv.image_eq_preimage s
 #align ring_equiv.image_eq_preimage RingEquiv.image_eq_preimage
+-/
 
+#print RingEquiv.coe_mulEquiv_trans /-
 @[simp]
 theorem coe_mulEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R ≃* S') = (e₁ : R ≃* S).trans ↑e₂ :=
   rfl
 #align ring_equiv.coe_mul_equiv_trans RingEquiv.coe_mulEquiv_trans
+-/
 
+#print RingEquiv.coe_addEquiv_trans /-
 @[simp]
 theorem coe_addEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R ≃+ S') = (e₁ : R ≃+ S).trans ↑e₂ :=
   rfl
 #align ring_equiv.coe_add_equiv_trans RingEquiv.coe_addEquiv_trans
+-/
 
 end Basic
 
@@ -361,6 +442,7 @@ section Opposite
 
 open MulOpposite
 
+#print RingEquiv.op /-
 /-- A ring iso `α ≃+* β` can equivalently be viewed as a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. -/
 @[simps]
 protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] : α ≃+* β ≃ (αᵐᵒᵖ ≃+* βᵐᵒᵖ)
@@ -370,23 +452,28 @@ protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] : α ≃+* β ≃ (
   left_inv f := by ext; rfl
   right_inv f := by ext; rfl
 #align ring_equiv.op RingEquiv.op
+-/
 
+#print RingEquiv.unop /-
 /-- The 'unopposite' of a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. Inverse to `ring_equiv.op`. -/
 @[simp]
 protected def unop {α β} [Add α] [Mul α] [Add β] [Mul β] : αᵐᵒᵖ ≃+* βᵐᵒᵖ ≃ (α ≃+* β) :=
   RingEquiv.op.symm
 #align ring_equiv.unop RingEquiv.unop
+-/
 
 section NonUnitalCommSemiring
 
 variable (R) [NonUnitalCommSemiring R]
 
+#print RingEquiv.toOpposite /-
 /-- A non-unital commutative ring is isomorphic to its opposite. -/
 def toOpposite : R ≃+* Rᵐᵒᵖ :=
   { MulOpposite.opEquiv with
     map_add' := fun x y => rfl
     map_mul' := fun x y => mul_comm (op y) (op x) }
 #align ring_equiv.to_opposite RingEquiv.toOpposite
+-/
 
 #print RingEquiv.toOpposite_apply /-
 @[simp]
@@ -410,21 +497,28 @@ section NonUnitalSemiring
 
 variable [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] (f : R ≃+* S) (x y : R)
 
+#print RingEquiv.map_zero /-
 /-- A ring isomorphism sends zero to zero. -/
 protected theorem map_zero : f 0 = 0 :=
   map_zero f
 #align ring_equiv.map_zero RingEquiv.map_zero
+-/
 
 variable {x}
 
+#print RingEquiv.map_eq_zero_iff /-
 protected theorem map_eq_zero_iff : f x = 0 ↔ x = 0 :=
   AddEquivClass.map_eq_zero_iff f
 #align ring_equiv.map_eq_zero_iff RingEquiv.map_eq_zero_iff
+-/
 
+#print RingEquiv.map_ne_zero_iff /-
 theorem map_ne_zero_iff : f x ≠ 0 ↔ x ≠ 0 :=
   AddEquivClass.map_ne_zero_iff f
 #align ring_equiv.map_ne_zero_iff RingEquiv.map_ne_zero_iff
+-/
 
+#print RingEquiv.ofBijective /-
 /-- Produce a ring isomorphism from a bijective ring homomorphism. -/
 noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
     R ≃+* S :=
@@ -432,18 +526,24 @@ noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Functi
     map_mul' := map_mul f
     map_add' := map_add f }
 #align ring_equiv.of_bijective RingEquiv.ofBijective
+-/
 
+#print RingEquiv.coe_ofBijective /-
 @[simp]
 theorem coe_ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
     (ofBijective f hf : R → S) = f :=
   rfl
 #align ring_equiv.coe_of_bijective RingEquiv.coe_ofBijective
+-/
 
+#print RingEquiv.ofBijective_apply /-
 theorem ofBijective_apply [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f)
     (x : R) : ofBijective f hf x = f x :=
   rfl
 #align ring_equiv.of_bijective_apply RingEquiv.ofBijective_apply
+-/
 
+#print RingEquiv.piCongrRight /-
 /-- A family of ring isomorphisms `Π j, (R j ≃+* S j)` generates a
 ring isomorphisms between `Π j, R j` and `Π j, S j`.
 
@@ -459,20 +559,26 @@ def piCongrRight {ι : Type _} {R S : ι → Type _} [∀ i, NonUnitalNonAssocSe
     toFun := fun x j => e j (x j)
     invFun := fun x j => (e j).symm (x j) }
 #align ring_equiv.Pi_congr_right RingEquiv.piCongrRight
+-/
 
+#print RingEquiv.piCongrRight_refl /-
 @[simp]
 theorem piCongrRight_refl {ι : Type _} {R : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)] :
     (piCongrRight fun i => RingEquiv.refl (R i)) = RingEquiv.refl _ :=
   rfl
 #align ring_equiv.Pi_congr_right_refl RingEquiv.piCongrRight_refl
+-/
 
+#print RingEquiv.piCongrRight_symm /-
 @[simp]
 theorem piCongrRight_symm {ι : Type _} {R S : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)]
     [∀ i, NonUnitalNonAssocSemiring (S i)] (e : ∀ i, R i ≃+* S i) :
     (piCongrRight e).symm = piCongrRight fun i => (e i).symm :=
   rfl
 #align ring_equiv.Pi_congr_right_symm RingEquiv.piCongrRight_symm
+-/
 
+#print RingEquiv.piCongrRight_trans /-
 @[simp]
 theorem piCongrRight_trans {ι : Type _} {R S T : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)]
     [∀ i, NonUnitalNonAssocSemiring (S i)] [∀ i, NonUnitalNonAssocSemiring (T i)]
@@ -480,6 +586,7 @@ theorem piCongrRight_trans {ι : Type _} {R S T : ι → Type _} [∀ i, NonUnit
     (piCongrRight e).trans (piCongrRight f) = piCongrRight fun i => (e i).trans (f i) :=
   rfl
 #align ring_equiv.Pi_congr_right_trans RingEquiv.piCongrRight_trans
+-/
 
 end NonUnitalSemiring
 
@@ -487,70 +594,92 @@ section Semiring
 
 variable [NonAssocSemiring R] [NonAssocSemiring S] (f : R ≃+* S) (x y : R)
 
+#print RingEquiv.map_one /-
 /-- A ring isomorphism sends one to one. -/
 protected theorem map_one : f 1 = 1 :=
   map_one f
 #align ring_equiv.map_one RingEquiv.map_one
+-/
 
 variable {x}
 
+#print RingEquiv.map_eq_one_iff /-
 protected theorem map_eq_one_iff : f x = 1 ↔ x = 1 :=
   MulEquivClass.map_eq_one_iff f
 #align ring_equiv.map_eq_one_iff RingEquiv.map_eq_one_iff
+-/
 
+#print RingEquiv.map_ne_one_iff /-
 theorem map_ne_one_iff : f x ≠ 1 ↔ x ≠ 1 :=
   MulEquivClass.map_ne_one_iff f
 #align ring_equiv.map_ne_one_iff RingEquiv.map_ne_one_iff
+-/
 
+#print RingEquiv.coe_monoidHom_refl /-
 theorem coe_monoidHom_refl : (RingEquiv.refl R : R →* R) = MonoidHom.id R :=
   rfl
 #align ring_equiv.coe_monoid_hom_refl RingEquiv.coe_monoidHom_refl
+-/
 
+#print RingEquiv.coe_addMonoidHom_refl /-
 @[simp]
 theorem coe_addMonoidHom_refl : (RingEquiv.refl R : R →+ R) = AddMonoidHom.id R :=
   rfl
 #align ring_equiv.coe_add_monoid_hom_refl RingEquiv.coe_addMonoidHom_refl
+-/
 
 /-! `ring_equiv.coe_mul_equiv_refl` and `ring_equiv.coe_add_equiv_refl` are proved above
 in higher generality -/
 
 
+#print RingEquiv.coe_ringHom_refl /-
 @[simp]
 theorem coe_ringHom_refl : (RingEquiv.refl R : R →* R) = RingHom.id R :=
   rfl
 #align ring_equiv.coe_ring_hom_refl RingEquiv.coe_ringHom_refl
+-/
 
+#print RingEquiv.coe_monoidHom_trans /-
 @[simp]
 theorem coe_monoidHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R →* S') = (e₂ : S →* S').comp ↑e₁ :=
   rfl
 #align ring_equiv.coe_monoid_hom_trans RingEquiv.coe_monoidHom_trans
+-/
 
+#print RingEquiv.coe_addMonoidHom_trans /-
 @[simp]
 theorem coe_addMonoidHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R →+ S') = (e₂ : S →+ S').comp ↑e₁ :=
   rfl
 #align ring_equiv.coe_add_monoid_hom_trans RingEquiv.coe_addMonoidHom_trans
+-/
 
 /-! `ring_equiv.coe_mul_equiv_trans` and `ring_equiv.coe_add_equiv_trans` are proved above
 in higher generality -/
 
 
+#print RingEquiv.coe_ringHom_trans /-
 @[simp]
 theorem coe_ringHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R →+* S') = (e₂ : S →+* S').comp ↑e₁ :=
   rfl
 #align ring_equiv.coe_ring_hom_trans RingEquiv.coe_ringHom_trans
+-/
 
+#print RingEquiv.comp_symm /-
 @[simp]
 theorem comp_symm (e : R ≃+* S) : (e : R →+* S).comp (e.symm : S →+* R) = RingHom.id S :=
   RingHom.ext e.apply_symm_apply
 #align ring_equiv.comp_symm RingEquiv.comp_symm
+-/
 
+#print RingEquiv.symm_comp /-
 @[simp]
 theorem symm_comp (e : R ≃+* S) : (e.symm : S →+* R).comp (e : R →+* S) = RingHom.id R :=
   RingHom.ext e.symm_apply_apply
 #align ring_equiv.symm_comp RingEquiv.symm_comp
+-/
 
 end Semiring
 
@@ -558,13 +687,17 @@ section NonUnitalRing
 
 variable [NonUnitalNonAssocRing R] [NonUnitalNonAssocRing S] (f : R ≃+* S) (x y : R)
 
+#print RingEquiv.map_neg /-
 protected theorem map_neg : f (-x) = -f x :=
   map_neg f x
 #align ring_equiv.map_neg RingEquiv.map_neg
+-/
 
+#print RingEquiv.map_sub /-
 protected theorem map_sub : f (x - y) = f x - f y :=
   map_sub f x y
 #align ring_equiv.map_sub RingEquiv.map_sub
+-/
 
 end NonUnitalRing
 
@@ -572,14 +705,18 @@ section Ring
 
 variable [NonAssocRing R] [NonAssocRing S] (f : R ≃+* S) (x y : R)
 
+#print RingEquiv.map_neg_one /-
 @[simp]
 theorem map_neg_one : f (-1) = -1 :=
   f.map_one ▸ f.map_neg 1
 #align ring_equiv.map_neg_one RingEquiv.map_neg_one
+-/
 
+#print RingEquiv.map_eq_neg_one_iff /-
 theorem map_eq_neg_one_iff {x : R} : f x = -1 ↔ x = -1 := by
   rw [← neg_eq_iff_eq_neg, ← neg_eq_iff_eq_neg, ← map_neg, RingEquiv.map_eq_one_iff]
 #align ring_equiv.map_eq_neg_one_iff RingEquiv.map_eq_neg_one_iff
+-/
 
 end Ring
 
@@ -587,35 +724,47 @@ section NonUnitalSemiringHom
 
 variable [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] [NonUnitalNonAssocSemiring S']
 
+#print RingEquiv.toNonUnitalRingHom /-
 /-- Reinterpret a ring equivalence as a non-unital ring homomorphism. -/
 def toNonUnitalRingHom (e : R ≃+* S) : R →ₙ+* S :=
   { e.toMulEquiv.toMulHom, e.toAddEquiv.toAddMonoidHom with }
 #align ring_equiv.to_non_unital_ring_hom RingEquiv.toNonUnitalRingHom
+-/
 
+#print RingEquiv.toNonUnitalRingHom_injective /-
 theorem toNonUnitalRingHom_injective :
     Function.Injective (toNonUnitalRingHom : R ≃+* S → R →ₙ+* S) := fun f g h =>
   RingEquiv.ext (NonUnitalRingHom.ext_iff.1 h)
 #align ring_equiv.to_non_unital_ring_hom_injective RingEquiv.toNonUnitalRingHom_injective
+-/
 
+#print RingEquiv.instCoeToNonUnitalRingHom /-
 /- The instance priority is lowered here so that in the case when `R` and `S` are both unital, Lean
 will first find and use `ring_equiv.has_coe_to_ring_hom`. -/
 instance (priority := 900) instCoeToNonUnitalRingHom : Coe (R ≃+* S) (R →ₙ+* S) :=
   ⟨RingEquiv.toNonUnitalRingHom⟩
 #align ring_equiv.has_coe_to_non_unital_ring_hom RingEquiv.instCoeToNonUnitalRingHom
+-/
 
+#print RingEquiv.toNonUnitalRingHom_eq_coe /-
 theorem toNonUnitalRingHom_eq_coe (f : R ≃+* S) : f.toNonUnitalRingHom = ↑f :=
   rfl
 #align ring_equiv.to_non_unital_ring_hom_eq_coe RingEquiv.toNonUnitalRingHom_eq_coe
+-/
 
+#print RingEquiv.coe_toNonUnitalRingHom /-
 @[simp, norm_cast]
 theorem coe_toNonUnitalRingHom (f : R ≃+* S) : ⇑(f : R →ₙ+* S) = f :=
   rfl
 #align ring_equiv.coe_to_non_unital_ring_hom RingEquiv.coe_toNonUnitalRingHom
+-/
 
+#print RingEquiv.coe_nonUnitalRingHom_inj_iff /-
 theorem coe_nonUnitalRingHom_inj_iff {R S : Type _} [NonUnitalNonAssocSemiring R]
     [NonUnitalNonAssocSemiring S] (f g : R ≃+* S) : f = g ↔ (f : R →ₙ+* S) = g :=
   ⟨congr_arg _, fun h => ext <| NonUnitalRingHom.ext_iff.mp h⟩
 #align ring_equiv.coe_non_unital_ring_hom_inj_iff RingEquiv.coe_nonUnitalRingHom_inj_iff
+-/
 
 #print RingEquiv.toNonUnitalRingHom_refl /-
 @[simp]
@@ -624,33 +773,43 @@ theorem toNonUnitalRingHom_refl : (RingEquiv.refl R).toNonUnitalRingHom = NonUni
 #align ring_equiv.to_non_unital_ring_hom_refl RingEquiv.toNonUnitalRingHom_refl
 -/
 
+#print RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply /-
 @[simp]
 theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
     ∀ y : S, e.toNonUnitalRingHom (e.symm.toNonUnitalRingHom y) = y :=
   e.toEquiv.apply_symm_apply
 #align ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply
+-/
 
+#print RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply /-
 @[simp]
 theorem symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply (e : R ≃+* S) :
     ∀ x : R, e.symm.toNonUnitalRingHom (e.toNonUnitalRingHom x) = x :=
   Equiv.symm_apply_apply e.toEquiv
 #align ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply
+-/
 
+#print RingEquiv.toNonUnitalRingHom_trans /-
 @[simp]
 theorem toNonUnitalRingHom_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂).toNonUnitalRingHom = e₂.toNonUnitalRingHom.comp e₁.toNonUnitalRingHom :=
   rfl
 #align ring_equiv.to_non_unital_ring_hom_trans RingEquiv.toNonUnitalRingHom_trans
+-/
 
+#print RingEquiv.toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom /-
 @[simp]
 theorem toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom (e : R ≃+* S) :
     e.toNonUnitalRingHom.comp e.symm.toNonUnitalRingHom = NonUnitalRingHom.id _ := by ext; simp
 #align ring_equiv.to_non_unital_ring_hom_comp_symm_to_non_unital_ring_hom RingEquiv.toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom
+-/
 
+#print RingEquiv.symm_toNonUnitalRingHom_comp_toNonUnitalRingHom /-
 @[simp]
 theorem symm_toNonUnitalRingHom_comp_toNonUnitalRingHom (e : R ≃+* S) :
     e.symm.toNonUnitalRingHom.comp e.toNonUnitalRingHom = NonUnitalRingHom.id _ := by ext; simp
 #align ring_equiv.symm_to_non_unital_ring_hom_comp_to_non_unital_ring_hom RingEquiv.symm_toNonUnitalRingHom_comp_toNonUnitalRingHom
+-/
 
 end NonUnitalSemiringHom
 
@@ -658,64 +817,88 @@ section SemiringHom
 
 variable [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring S']
 
+#print RingEquiv.toRingHom /-
 /-- Reinterpret a ring equivalence as a ring homomorphism. -/
 def toRingHom (e : R ≃+* S) : R →+* S :=
   { e.toMulEquiv.toMonoidHom, e.toAddEquiv.toAddMonoidHom with }
 #align ring_equiv.to_ring_hom RingEquiv.toRingHom
+-/
 
+#print RingEquiv.toRingHom_injective /-
 theorem toRingHom_injective : Function.Injective (toRingHom : R ≃+* S → R →+* S) := fun f g h =>
   RingEquiv.ext (RingHom.ext_iff.1 h)
 #align ring_equiv.to_ring_hom_injective RingEquiv.toRingHom_injective
+-/
 
+#print RingEquiv.instCoeToRingHom /-
 instance instCoeToRingHom : Coe (R ≃+* S) (R →+* S) :=
   ⟨RingEquiv.toRingHom⟩
 #align ring_equiv.has_coe_to_ring_hom RingEquiv.instCoeToRingHom
+-/
 
+#print RingEquiv.toRingHom_eq_coe /-
 theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
   rfl
 #align ring_equiv.to_ring_hom_eq_coe RingEquiv.toRingHom_eq_coe
+-/
 
+#print RingEquiv.coe_toRingHom /-
 @[simp, norm_cast]
 theorem coe_toRingHom (f : R ≃+* S) : ⇑(f : R →+* S) = f :=
   rfl
 #align ring_equiv.coe_to_ring_hom RingEquiv.coe_toRingHom
+-/
 
+#print RingEquiv.coe_ringHom_inj_iff /-
 theorem coe_ringHom_inj_iff {R S : Type _} [NonAssocSemiring R] [NonAssocSemiring S]
     (f g : R ≃+* S) : f = g ↔ (f : R →+* S) = g :=
   ⟨congr_arg _, fun h => ext <| RingHom.ext_iff.mp h⟩
 #align ring_equiv.coe_ring_hom_inj_iff RingEquiv.coe_ringHom_inj_iff
+-/
 
+#print RingEquiv.toNonUnitalRingHom_commutes /-
 /-- The two paths coercion can take to a `non_unital_ring_hom` are equivalent -/
 @[simp, norm_cast]
 theorem toNonUnitalRingHom_commutes (f : R ≃+* S) : ((f : R →+* S) : R →ₙ+* S) = (f : R →ₙ+* S) :=
   rfl
 #align ring_equiv.to_non_unital_ring_hom_commutes RingEquiv.toNonUnitalRingHom_commutes
+-/
 
+#print RingEquiv.toMonoidHom /-
 /-- Reinterpret a ring equivalence as a monoid homomorphism. -/
 abbrev toMonoidHom (e : R ≃+* S) : R →* S :=
   e.toRingHom.toMonoidHom
 #align ring_equiv.to_monoid_hom RingEquiv.toMonoidHom
+-/
 
+#print RingEquiv.toAddMonoidHom /-
 /-- Reinterpret a ring equivalence as an `add_monoid` homomorphism. -/
 abbrev toAddMonoidHom (e : R ≃+* S) : R →+ S :=
   e.toRingHom.toAddMonoidHom
 #align ring_equiv.to_add_monoid_hom RingEquiv.toAddMonoidHom
+-/
 
+#print RingEquiv.toAddMonoidMom_commutes /-
 /-- The two paths coercion can take to an `add_monoid_hom` are equivalent -/
 theorem toAddMonoidMom_commutes (f : R ≃+* S) :
     (f : R →+* S).toAddMonoidHom = (f : R ≃+ S).toAddMonoidHom :=
   rfl
 #align ring_equiv.to_add_monoid_hom_commutes RingEquiv.toAddMonoidMom_commutes
+-/
 
+#print RingEquiv.toMonoidHom_commutes /-
 /-- The two paths coercion can take to an `monoid_hom` are equivalent -/
 theorem toMonoidHom_commutes (f : R ≃+* S) : (f : R →+* S).toMonoidHom = (f : R ≃* S).toMonoidHom :=
   rfl
 #align ring_equiv.to_monoid_hom_commutes RingEquiv.toMonoidHom_commutes
+-/
 
+#print RingEquiv.toEquiv_commutes /-
 /-- The two paths coercion can take to an `equiv` are equivalent -/
 theorem toEquiv_commutes (f : R ≃+* S) : (f : R ≃+ S).toEquiv = (f : R ≃* S).toEquiv :=
   rfl
 #align ring_equiv.to_equiv_commutes RingEquiv.toEquiv_commutes
+-/
 
 #print RingEquiv.toRingHom_refl /-
 @[simp]
@@ -738,34 +921,45 @@ theorem toAddMonoidHom_refl : (RingEquiv.refl R).toAddMonoidHom = AddMonoidHom.i
 #align ring_equiv.to_add_monoid_hom_refl RingEquiv.toAddMonoidHom_refl
 -/
 
+#print RingEquiv.toRingHom_apply_symm_toRingHom_apply /-
 @[simp]
 theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
     ∀ y : S, e.toRingHom (e.symm.toRingHom y) = y :=
   e.toEquiv.apply_symm_apply
 #align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_apply
+-/
 
+#print RingEquiv.symm_toRingHom_apply_toRingHom_apply /-
 @[simp]
 theorem symm_toRingHom_apply_toRingHom_apply (e : R ≃+* S) :
     ∀ x : R, e.symm.toRingHom (e.toRingHom x) = x :=
   Equiv.symm_apply_apply e.toEquiv
 #align ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply RingEquiv.symm_toRingHom_apply_toRingHom_apply
+-/
 
+#print RingEquiv.toRingHom_trans /-
 @[simp]
 theorem toRingHom_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂).toRingHom = e₂.toRingHom.comp e₁.toRingHom :=
   rfl
 #align ring_equiv.to_ring_hom_trans RingEquiv.toRingHom_trans
+-/
 
+#print RingEquiv.toRingHom_comp_symm_toRingHom /-
 @[simp]
 theorem toRingHom_comp_symm_toRingHom (e : R ≃+* S) :
     e.toRingHom.comp e.symm.toRingHom = RingHom.id _ := by ext; simp
 #align ring_equiv.to_ring_hom_comp_symm_to_ring_hom RingEquiv.toRingHom_comp_symm_toRingHom
+-/
 
+#print RingEquiv.symm_toRingHom_comp_toRingHom /-
 @[simp]
 theorem symm_toRingHom_comp_toRingHom (e : R ≃+* S) :
     e.symm.toRingHom.comp e.toRingHom = RingHom.id _ := by ext; simp
 #align ring_equiv.symm_to_ring_hom_comp_to_ring_hom RingEquiv.symm_toRingHom_comp_toRingHom
+-/
 
+#print RingEquiv.ofHomInv' /-
 /-- Construct an equivalence of rings from homomorphisms in both directions, which are inverses.
 -/
 @[simps]
@@ -781,7 +975,9 @@ def ofHomInv' {R S F G : Type _} [NonUnitalNonAssocSemiring R] [NonUnitalNonAsso
   map_mul' := map_mul hom
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv' RingEquiv.ofHomInv'
+-/
 
+#print RingEquiv.ofHomInv /-
 /--
 Construct an equivalence of rings from unital homomorphisms in both directions, which are inverses.
 -/
@@ -798,6 +994,7 @@ def ofHomInv {R S F G : Type _} [NonAssocSemiring R] [NonAssocSemiring S] [RingH
   map_mul' := map_mul hom
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv RingEquiv.ofHomInv
+-/
 
 end SemiringHom
 
@@ -805,9 +1002,11 @@ section GroupPower
 
 variable [Semiring R] [Semiring S]
 
+#print RingEquiv.map_pow /-
 protected theorem map_pow (f : R ≃+* S) (a) : ∀ n : ℕ, f (a ^ n) = f a ^ n :=
   map_pow f a
 #align ring_equiv.map_pow RingEquiv.map_pow
+-/
 
 end GroupPower
 
@@ -815,21 +1014,25 @@ end RingEquiv
 
 namespace MulEquiv
 
+#print MulEquiv.toRingEquiv /-
 /-- Gives a `ring_equiv` from an element of a `mul_equiv_class` preserving addition.-/
 def toRingEquiv {R S F : Type _} [Add R] [Add S] [Mul R] [Mul S] [MulEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x + y) = f x + f y) : R ≃+* S :=
   { (f : R ≃* S).toEquiv, (f : R ≃* S), AddEquiv.mk' (f : R ≃* S).toEquiv H with }
 #align mul_equiv.to_ring_equiv MulEquiv.toRingEquiv
+-/
 
 end MulEquiv
 
 namespace AddEquiv
 
+#print AddEquiv.toRingEquiv /-
 /-- Gives a `ring_equiv` from an element of an `add_equiv_class` preserving addition.-/
 def toRingEquiv {R S F : Type _} [Add R] [Add S] [Mul R] [Mul S] [AddEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x * y) = f x * f y) : R ≃+* S :=
   { (f : R ≃+ S).toEquiv, (f : R ≃+ S), MulEquiv.mk' (f : R ≃+ S).toEquiv H with }
 #align add_equiv.to_ring_equiv AddEquiv.toRingEquiv
+-/
 
 end AddEquiv
 
@@ -837,16 +1040,21 @@ namespace RingEquiv
 
 variable [Add R] [Add S] [Mul R] [Mul S]
 
+#print RingEquiv.self_trans_symm /-
 @[simp]
 theorem self_trans_symm (e : R ≃+* S) : e.trans e.symm = RingEquiv.refl R :=
   ext e.3
 #align ring_equiv.self_trans_symm RingEquiv.self_trans_symm
+-/
 
+#print RingEquiv.symm_trans_self /-
 @[simp]
 theorem symm_trans_self (e : R ≃+* S) : e.symm.trans e = RingEquiv.refl S :=
   ext e.4
 #align ring_equiv.symm_trans_self RingEquiv.symm_trans_self
+-/
 
+#print RingEquiv.noZeroDivisors /-
 /-- If two rings are isomorphic, and the second doesn't have zero divisors,
 then so does the first. -/
 protected theorem noZeroDivisors {A : Type _} (B : Type _) [Ring A] [Ring B] [NoZeroDivisors B]
@@ -857,7 +1065,9 @@ protected theorem noZeroDivisors {A : Type _} (B : Type _) [Ring A] [Ring B] [No
       have : e x * e y = 0 := by rw [← e.map_mul, hxy, e.map_zero]
       simpa using eq_zero_or_eq_zero_of_mul_eq_zero this }
 #align ring_equiv.no_zero_divisors RingEquiv.noZeroDivisors
+-/
 
+#print RingEquiv.isDomain /-
 /-- If two rings are isomorphic, and the second is a domain, then so is the first. -/
 protected theorem isDomain {A : Type _} (B : Type _) [Ring A] [Ring B] [IsDomain B] (e : A ≃+* B) :
     IsDomain A :=
@@ -866,6 +1076,7 @@ protected theorem isDomain {A : Type _} (B : Type _) [Ring A] [Ring B] [IsDomain
   haveI := e.no_zero_divisors B
   exact NoZeroDivisors.to_isDomain _
 #align ring_equiv.is_domain RingEquiv.isDomain
+-/
 
 end RingEquiv
 
Diff
@@ -68,7 +68,7 @@ add_decl_doc RingEquiv.toMulEquiv
 /-- `ring_equiv_class F R S` states that `F` is a type of ring structure preserving equivalences.
 You should extend this class when you extend `ring_equiv`. -/
 class RingEquivClass (F : Type _) (R S : outParam (Type _)) [Mul R] [Add R] [Mul S] [Add S] extends
-  MulEquivClass F R S where
+    MulEquivClass F R S where
   map_add : ∀ (f : F) (a b), f (a + b) = f a + f b
 #align ring_equiv_class RingEquivClass
 -/
Diff
@@ -136,12 +136,10 @@ theorem toEquiv_eq_coe (f : R ≃+* S) : f.toEquiv = f :=
   rfl
 #align ring_equiv.to_equiv_eq_coe RingEquiv.toEquiv_eq_coe
 
-/- warning: ring_equiv.to_fun_eq_coe clashes with [anonymous] -> [anonymous]
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_fun_eq_coe [anonymous]ₓ'. -/
 @[simp]
-theorem [anonymous] (f : R ≃+* S) : f.toFun = f :=
+theorem toFun_eq_coe (f : R ≃+* S) : f.toFun = f :=
   rfl
-#align ring_equiv.to_fun_eq_coe [anonymous]
+#align ring_equiv.to_fun_eq_coe RingEquiv.toFun_eq_coe
 
 @[simp]
 theorem coe_toEquiv (f : R ≃+* S) : ⇑(f : R ≃ S) = f :=
Diff
@@ -47,12 +47,6 @@ equiv, mul_equiv, add_equiv, ring_equiv, mul_aut, add_aut, ring_aut
 
 variable {F α β R S S' : Type _}
 
-/- warning: ring_equiv -> RingEquiv is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) (S : Type.{u2}) [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S], Sort.{max (succ u1) (succ u2)}
-but is expected to have type
-  forall (R : Type.{u1}) (S : Type.{u2}) [_inst_1 : Mul.{u1} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u1} R] [_inst_4 : Add.{u2} S], Sort.{max (succ u1) (succ u2)}
-Case conversion may be inaccurate. Consider using '#align ring_equiv RingEquivₓ'. -/
 /-- An equivalence between two (non-unital non-associative semi)rings that preserves the
 algebraic structure. -/
 structure RingEquiv (R S : Type _) [Mul R] [Add R] [Mul S] [Add S] extends R ≃ S, R ≃* S, R ≃+ S
@@ -89,12 +83,6 @@ instance (priority := 100) toAddEquivClass (F R S : Type _) [Mul R] [Add R] [Mul
 #align ring_equiv_class.to_add_equiv_class RingEquivClass.toAddEquivClass
 -/
 
-/- warning: ring_equiv_class.to_ring_hom_class -> RingEquivClass.toRingHomClass is a dubious translation:
-lean 3 declaration is
-  forall (F : Type.{u1}) (R : Type.{u2}) (S : Type.{u3}) [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u3} S] [h : RingEquivClass.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2))) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2)))], RingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
-but is expected to have type
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u3} S] [h : RingEquivClass.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2)))], RingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
-Case conversion may be inaccurate. Consider using '#align ring_equiv_class.to_ring_hom_class RingEquivClass.toRingHomClassₓ'. -/
 -- See note [lower instance priority]
 instance (priority := 100) toRingHomClass (F R S : Type _) [NonAssocSemiring R] [NonAssocSemiring S]
     [h : RingEquivClass F R S] : RingHomClass F R S :=
@@ -105,12 +93,6 @@ instance (priority := 100) toRingHomClass (F R S : Type _) [NonAssocSemiring R]
     map_one := map_one }
 #align ring_equiv_class.to_ring_hom_class RingEquivClass.toRingHomClass
 
-/- warning: ring_equiv_class.to_non_unital_ring_hom_class -> RingEquivClass.toNonUnitalRingHomClass is a dubious translation:
-lean 3 declaration is
-  forall (F : Type.{u1}) (R : Type.{u2}) (S : Type.{u3}) [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [h : RingEquivClass.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))], NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
-but is expected to have type
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [h : RingEquivClass.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))], NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
-Case conversion may be inaccurate. Consider using '#align ring_equiv_class.to_non_unital_ring_hom_class RingEquivClass.toNonUnitalRingHomClassₓ'. -/
 -- See note [lower instance priority]
 instance (priority := 100) toNonUnitalRingHomClass (F R S : Type _) [NonUnitalNonAssocSemiring R]
     [NonUnitalNonAssocSemiring S] [h : RingEquivClass F R S] : NonUnitalRingHomClass F R S :=
@@ -149,59 +131,33 @@ instance : RingEquivClass (R ≃+* S) R S where
 instance : CoeFun (R ≃+* S) fun _ => R → S :=
   ⟨RingEquiv.toFun⟩
 
-/- warning: ring_equiv.to_equiv_eq_coe -> RingEquiv.toEquiv_eq_coe is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{succ u1, succ u2} R S) (RingEquiv.toEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (HasLiftT.mk.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (CoeTCₓ.coe.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (Equiv.hasCoeT.{succ u1, succ u2, max (succ u1) (succ u2)} R S (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4)))))) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} R S) (RingEquiv.toEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 f) (EquivLike.toEquiv.{succ u2, succ u1, max (succ u2) (succ u1)} R S (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_equiv_eq_coe RingEquiv.toEquiv_eq_coeₓ'. -/
 @[simp]
 theorem toEquiv_eq_coe (f : R ≃+* S) : f.toEquiv = f :=
   rfl
 #align ring_equiv.to_equiv_eq_coe RingEquiv.toEquiv_eq_coe
 
 /- warning: ring_equiv.to_fun_eq_coe clashes with [anonymous] -> [anonymous]
-warning: ring_equiv.to_fun_eq_coe -> [anonymous] is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (R -> S) (RingEquiv.toFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f)
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}}, (Nat -> R -> S) -> Nat -> (List.{u1} R) -> (List.{u2} S)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_fun_eq_coe [anonymous]ₓ'. -/
 @[simp]
 theorem [anonymous] (f : R ≃+* S) : f.toFun = f :=
   rfl
 #align ring_equiv.to_fun_eq_coe [anonymous]
 
-/- warning: ring_equiv.coe_to_equiv -> RingEquiv.coe_toEquiv is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} R S) (fun (_x : Equiv.{succ u1, succ u2} R S) => R -> S) (Equiv.hasCoeToFun.{succ u1, succ u2} R S) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (HasLiftT.mk.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (CoeTCₓ.coe.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (Equiv.hasCoeT.{succ u1, succ u2, max (succ u1) (succ u2)} R S (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4)))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} R S) R (fun (_x : R) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : R) => S) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} R S) (EquivLike.toEquiv.{succ u2, succ u1, max (succ u2) (succ u1)} R S (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_equiv RingEquiv.coe_toEquivₓ'. -/
 @[simp]
 theorem coe_toEquiv (f : R ≃+* S) : ⇑(f : R ≃ S) = f :=
   rfl
 #align ring_equiv.coe_to_equiv RingEquiv.coe_toEquiv
 
-/- warning: ring_equiv.map_mul -> RingEquiv.map_mul is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_mul RingEquiv.map_mulₓ'. -/
 /-- A ring isomorphism preserves multiplication. -/
 protected theorem map_mul (e : R ≃+* S) (x y : R) : e (x * y) = e x * e y :=
   map_mul e x y
 #align ring_equiv.map_mul RingEquiv.map_mul
 
-/- warning: ring_equiv.map_add -> RingEquiv.map_add is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_add RingEquiv.map_addₓ'. -/
 /-- A ring isomorphism preserves addition. -/
 protected theorem map_add (e : R ≃+* S) (x y : R) : e (x + y) = e x + e y :=
   map_add e x y
 #align ring_equiv.map_add RingEquiv.map_add
 
-/- warning: ring_equiv.ext -> RingEquiv.ext is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.ext RingEquiv.extₓ'. -/
 /-- Two ring isomorphisms agree if they are defined by the
     same underlying function. -/
 @[ext]
@@ -214,85 +170,43 @@ theorem coe_mk (e e' h₁ h₂ h₃ h₄) : ⇑(⟨e, e', h₁, h₂, h₃, h₄
   rfl
 #align ring_equiv.coe_mk RingEquiv.coe_mkₓ
 
-/- warning: ring_equiv.mk_coe -> RingEquiv.mk_coe is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.mk_coe RingEquiv.mk_coeₓ'. -/
 @[simp]
 theorem mk_coe (e : R ≃+* S) (e' h₁ h₂ h₃ h₄) : (⟨e, e', h₁, h₂, h₃, h₄⟩ : R ≃+* S) = e :=
   ext fun _ => rfl
 #align ring_equiv.mk_coe RingEquiv.mk_coe
 
-/- warning: ring_equiv.congr_arg -> RingEquiv.congr_arg is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.congr_arg RingEquiv.congr_argₓ'. -/
 protected theorem congr_arg {f : R ≃+* S} {x x' : R} : x = x' → f x = f x' :=
   FunLike.congr_arg f
 #align ring_equiv.congr_arg RingEquiv.congr_arg
 
-/- warning: ring_equiv.congr_fun -> RingEquiv.congr_fun is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.congr_fun RingEquiv.congr_funₓ'. -/
 protected theorem congr_fun {f g : R ≃+* S} (h : f = g) (x : R) : f x = g x :=
   FunLike.congr_fun h x
 #align ring_equiv.congr_fun RingEquiv.congr_fun
 
-/- warning: ring_equiv.ext_iff -> RingEquiv.ext_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.ext_iff RingEquiv.ext_iffₓ'. -/
 protected theorem ext_iff {f g : R ≃+* S} : f = g ↔ ∀ x, f x = g x :=
   FunLike.ext_iff
 #align ring_equiv.ext_iff RingEquiv.ext_iff
 
-/- warning: ring_equiv.to_add_equiv_eq_coe -> RingEquiv.toAddEquiv_eq_coe is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (RingEquiv.toAddEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (AddEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_2 _inst_4 (RingEquivClass.toAddEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (AddEquiv.{u2, u1} R S _inst_3 _inst_4) (RingEquiv.toAddEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 f) (AddEquivClass.toAddEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_3 _inst_4 (RingEquivClass.toAddEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4)) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_add_equiv_eq_coe RingEquiv.toAddEquiv_eq_coeₓ'. -/
 @[simp]
 theorem toAddEquiv_eq_coe (f : R ≃+* S) : f.toAddEquiv = ↑f :=
   rfl
 #align ring_equiv.to_add_equiv_eq_coe RingEquiv.toAddEquiv_eq_coe
 
-/- warning: ring_equiv.to_mul_equiv_eq_coe -> RingEquiv.toMulEquiv_eq_coe is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (RingEquiv.toMulEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (MulEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (MulEquiv.{u2, u1} R S _inst_1 _inst_2) (RingEquiv.toMulEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 f) (MulEquivClass.toMulEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4)) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_mul_equiv_eq_coe RingEquiv.toMulEquiv_eq_coeₓ'. -/
 @[simp]
 theorem toMulEquiv_eq_coe (f : R ≃+* S) : f.toMulEquiv = ↑f :=
   rfl
 #align ring_equiv.to_mul_equiv_eq_coe RingEquiv.toMulEquiv_eq_coe
 
-/- warning: ring_equiv.coe_to_mul_equiv -> RingEquiv.coe_toMulEquiv is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (fun (_x : MulEquiv.{u1, u2} R S _inst_1 _inst_3) => R -> S) (MulEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_3) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (MulEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} R S _inst_1 _inst_2) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (MulEquiv.{u2, u1} R S _inst_1 _inst_2) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (MulEquiv.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (MulEquiv.instMulEquivClassMulEquiv.{u2, u1} R S _inst_1 _inst_2)))) (MulEquivClass.toMulEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4)) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_mul_equiv RingEquiv.coe_toMulEquivₓ'. -/
 @[simp, norm_cast]
 theorem coe_toMulEquiv (f : R ≃+* S) : ⇑(f : R ≃* S) = f :=
   rfl
 #align ring_equiv.coe_to_mul_equiv RingEquiv.coe_toMulEquiv
 
-/- warning: ring_equiv.coe_to_add_equiv -> RingEquiv.coe_toAddEquiv is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (fun (_x : AddEquiv.{u1, u2} R S _inst_2 _inst_4) => R -> S) (AddEquiv.hasCoeToFun.{u1, u2} R S _inst_2 _inst_4) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (AddEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_2 _inst_4 (RingEquivClass.toAddEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (AddEquiv.{u2, u1} R S _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (AddEquiv.{u2, u1} R S _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (AddEquiv.{u2, u1} R S _inst_3 _inst_4) R S (AddEquivClass.toEquivLike.{max u2 u1, u2, u1} (AddEquiv.{u2, u1} R S _inst_3 _inst_4) R S _inst_3 _inst_4 (AddEquiv.instAddEquivClassAddEquiv.{u2, u1} R S _inst_3 _inst_4)))) (AddEquivClass.toAddEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_3 _inst_4 (RingEquivClass.toAddEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4)) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_add_equiv RingEquiv.coe_toAddEquivₓ'. -/
 @[simp, norm_cast]
 theorem coe_toAddEquiv (f : R ≃+* S) : ⇑(f : R ≃+ S) = f :=
   rfl
 #align ring_equiv.coe_to_add_equiv RingEquiv.coe_toAddEquiv
 
-/- warning: ring_equiv.ring_equiv_of_unique -> RingEquiv.ringEquivOfUnique is a dubious translation:
-lean 3 declaration is
-  forall {M : Type.{u1}} {N : Type.{u2}} [_inst_7 : Unique.{succ u1} M] [_inst_8 : Unique.{succ u2} N] [_inst_9 : Add.{u1} M] [_inst_10 : Mul.{u1} M] [_inst_11 : Add.{u2} N] [_inst_12 : Mul.{u2} N], RingEquiv.{u1, u2} M N _inst_10 _inst_9 _inst_12 _inst_11
-but is expected to have type
-  forall {M : Type.{u1}} {N : Type.{u2}} [_inst_7 : Unique.{succ u1} M] [_inst_8 : Unique.{succ u2} N] [_inst_9 : Add.{u1} M] [_inst_10 : Mul.{u1} M] [_inst_11 : Add.{u2} N] [_inst_12 : Mul.{u2} N], RingEquiv.{u1, u2} M N _inst_10 _inst_12 _inst_9 _inst_11
-Case conversion may be inaccurate. Consider using '#align ring_equiv.ring_equiv_of_unique RingEquiv.ringEquivOfUniqueₓ'. -/
 /-- The `ring_equiv` between two semirings with a unique element. -/
 def ringEquivOfUnique {M N} [Unique M] [Unique N] [Add M] [Mul M] [Add N] [Mul N] : M ≃+* N :=
   { AddEquiv.addEquivOfUnique, MulEquiv.mulEquivOfUnique with }
@@ -305,12 +219,6 @@ instance {M N} [Unique M] [Unique N] [Add M] [Mul M] [Add N] [Mul N] : Unique (M
 
 variable (R)
 
-/- warning: ring_equiv.refl -> RingEquiv.refl is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R], RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2
-but is expected to have type
-  forall (R : Type.{u1}) [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R], RingEquiv.{u1, u1} R R _inst_1 _inst_1 _inst_2 _inst_2
-Case conversion may be inaccurate. Consider using '#align ring_equiv.refl RingEquiv.reflₓ'. -/
 /-- The identity map is a ring isomorphism. -/
 @[refl]
 protected def refl : R ≃+* R :=
@@ -324,23 +232,11 @@ theorem refl_apply (x : R) : RingEquiv.refl R x = x :=
 #align ring_equiv.refl_apply RingEquiv.refl_apply
 -/
 
-/- warning: ring_equiv.coe_add_equiv_refl -> RingEquiv.coe_addEquiv_refl is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R], Eq.{succ u1} (AddEquiv.{u1, u1} R R _inst_2 _inst_2) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) (AddEquiv.{u1, u1} R R _inst_2 _inst_2) (HasLiftT.mk.{succ u1, succ u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) (AddEquiv.{u1, u1} R R _inst_2 _inst_2) (CoeTCₓ.coe.{succ u1, succ u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) (AddEquiv.{u1, u1} R R _inst_2 _inst_2) (AddEquiv.hasCoeT.{u1, u1, u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) R R _inst_2 _inst_2 (RingEquivClass.toAddEquivClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) R R _inst_1 _inst_2 _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2))))) (RingEquiv.refl.{u1} R _inst_1 _inst_2)) (AddEquiv.refl.{u1} R _inst_2)
-but is expected to have type
-  forall (R : Type.{u1}) [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R], Eq.{succ u1} (AddEquiv.{u1, u1} R R _inst_2 _inst_2) (AddEquivClass.toAddEquiv.{u1, u1, u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_1 _inst_2 _inst_2) R R _inst_2 _inst_2 (RingEquivClass.toAddEquivClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_1 _inst_2 _inst_2) R R _inst_1 _inst_2 _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u1, u1} R R _inst_1 _inst_1 _inst_2 _inst_2)) (RingEquiv.refl.{u1} R _inst_1 _inst_2)) (AddEquiv.refl.{u1} R _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_add_equiv_refl RingEquiv.coe_addEquiv_reflₓ'. -/
 @[simp]
 theorem coe_addEquiv_refl : (RingEquiv.refl R : R ≃+ R) = AddEquiv.refl R :=
   rfl
 #align ring_equiv.coe_add_equiv_refl RingEquiv.coe_addEquiv_refl
 
-/- warning: ring_equiv.coe_mul_equiv_refl -> RingEquiv.coe_mulEquiv_refl is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R], Eq.{succ u1} (MulEquiv.{u1, u1} R R _inst_1 _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) (MulEquiv.{u1, u1} R R _inst_1 _inst_1) (HasLiftT.mk.{succ u1, succ u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) (MulEquiv.{u1, u1} R R _inst_1 _inst_1) (CoeTCₓ.coe.{succ u1, succ u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) (MulEquiv.{u1, u1} R R _inst_1 _inst_1) (MulEquiv.hasCoeT.{u1, u1, u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) R R _inst_1 _inst_1 (RingEquivClass.toMulEquivClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2) R R _inst_1 _inst_2 _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u1} R R _inst_1 _inst_2 _inst_1 _inst_2))))) (RingEquiv.refl.{u1} R _inst_1 _inst_2)) (MulEquiv.refl.{u1} R _inst_1)
-but is expected to have type
-  forall (R : Type.{u1}) [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R], Eq.{succ u1} (MulEquiv.{u1, u1} R R _inst_1 _inst_1) (MulEquivClass.toMulEquiv.{u1, u1, u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_1 _inst_2 _inst_2) R R _inst_1 _inst_1 (RingEquivClass.toMulEquivClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R _inst_1 _inst_1 _inst_2 _inst_2) R R _inst_1 _inst_2 _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u1, u1} R R _inst_1 _inst_1 _inst_2 _inst_2)) (RingEquiv.refl.{u1} R _inst_1 _inst_2)) (MulEquiv.refl.{u1} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_mul_equiv_refl RingEquiv.coe_mulEquiv_reflₓ'. -/
 @[simp]
 theorem coe_mulEquiv_refl : (RingEquiv.refl R : R ≃* R) = MulEquiv.refl R :=
   rfl
@@ -351,24 +247,12 @@ instance : Inhabited (R ≃+* R) :=
 
 variable {R}
 
-/- warning: ring_equiv.symm -> RingEquiv.symm is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S], (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) -> (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2)
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u1} R] [_inst_4 : Add.{u2} S], (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) -> (RingEquiv.{u2, u1} S R _inst_2 _inst_1 _inst_4 _inst_3)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm RingEquiv.symmₓ'. -/
 /-- The inverse of a ring isomorphism is a ring isomorphism. -/
 @[symm]
 protected def symm (e : R ≃+* S) : S ≃+* R :=
   { e.toMulEquiv.symm, e.toAddEquiv.symm with }
 #align ring_equiv.symm RingEquiv.symm
 
-/- warning: ring_equiv.simps.symm_apply -> RingEquiv.Simps.symm_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S], (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) -> S -> R
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u1} R] [_inst_4 : Add.{u2} S], (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) -> S -> R
-Case conversion may be inaccurate. Consider using '#align ring_equiv.simps.symm_apply RingEquiv.Simps.symm_applyₓ'. -/
 /-- See Note [custom simps projection] -/
 def Simps.symm_apply (e : R ≃+* S) : S → R :=
   e.symm
@@ -376,61 +260,31 @@ def Simps.symm_apply (e : R ≃+* S) : S → R :=
 
 initialize_simps_projections RingEquiv (toFun → apply, invFun → symm_apply)
 
-/- warning: ring_equiv.inv_fun_eq_symm -> RingEquiv.invFun_eq_symm is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (S -> R) (RingEquiv.invFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (fun (_x : RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) => S -> R) (RingEquiv.hasCoeToFun.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (S -> R) (EquivLike.inv.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))) f) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S (fun (_x : S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S) => R) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_1 (RingEquivClass.toMulEquivClass.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_4 _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3))))) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 f))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.inv_fun_eq_symm RingEquiv.invFun_eq_symmₓ'. -/
 @[simp]
 theorem invFun_eq_symm (f : R ≃+* S) : f.invFun = f.symm :=
   rfl
 #align ring_equiv.inv_fun_eq_symm RingEquiv.invFun_eq_symm
 
-/- warning: ring_equiv.symm_symm -> RingEquiv.symm_symm is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (RingEquiv.symm.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e)) e
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (RingEquiv.symm.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 e)) e
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_symm RingEquiv.symm_symmₓ'. -/
 @[simp]
 theorem symm_symm (e : R ≃+* S) : e.symm.symm = e :=
   ext fun x => rfl
 #align ring_equiv.symm_symm RingEquiv.symm_symm
 
-/- warning: ring_equiv.coe_to_equiv_symm -> RingEquiv.coe_toEquiv_symm is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2)} (Equiv.{succ u2, succ u1} S R) ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Sort.{max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u2) (succ u1), max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (Equiv.{succ u2, succ u1} S R) (HasLiftT.mk.{max (succ u2) (succ u1), max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (Equiv.{succ u2, succ u1} S R) (CoeTCₓ.coe.{max (succ u2) (succ u1), max 1 (max (succ u2) (succ u1)) (succ u1) (succ u2)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (Equiv.{succ u2, succ u1} S R) (Equiv.hasCoeT.{succ u2, succ u1, max (succ u2) (succ u1)} S R (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) S R _inst_3 _inst_1 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2)))))) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e)) (Equiv.symm.{succ u1, succ u2} R S ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (HasLiftT.mk.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (CoeTCₓ.coe.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (Equiv.hasCoeT.{succ u1, succ u2, max (succ u1) (succ u2)} R S (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4)))))) e))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (Equiv.{succ u1, succ u2} S R) (EquivLike.toEquiv.{succ u1, succ u2, max (succ u2) (succ u1)} S R (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_1 (RingEquivClass.toMulEquivClass.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_4 _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3))) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 e)) (Equiv.symm.{succ u2, succ u1} R S (EquivLike.toEquiv.{succ u2, succ u1, max (succ u2) (succ u1)} R S (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))) e))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_equiv_symm RingEquiv.coe_toEquiv_symmₓ'. -/
 @[simp]
 theorem coe_toEquiv_symm (e : R ≃+* S) : (e.symm : S ≃ R) = (e : R ≃ S).symm :=
   rfl
 #align ring_equiv.coe_to_equiv_symm RingEquiv.coe_toEquiv_symm
 
-/- warning: ring_equiv.symm_bijective -> RingEquiv.symm_bijective is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S], Function.Bijective.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S], Function.Bijective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_bijective RingEquiv.symm_bijectiveₓ'. -/
 theorem symm_bijective : Function.Bijective (RingEquiv.symm : R ≃+* S → S ≃+* R) :=
   Equiv.bijective ⟨RingEquiv.symm, RingEquiv.symm, symm_symm, symm_symm⟩
 #align ring_equiv.symm_bijective RingEquiv.symm_bijective
 
-/- warning: ring_equiv.mk_coe' -> RingEquiv.mk_coe' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.mk_coe' RingEquiv.mk_coe'ₓ'. -/
 @[simp]
 theorem mk_coe' (e : R ≃+* S) (f h₁ h₂ h₃ h₄) :
     (RingEquiv.mk f (⇑e) h₁ h₂ h₃ h₄ : S ≃+* R) = e.symm :=
   symm_bijective.Injective <| ext fun x => rfl
 #align ring_equiv.mk_coe' RingEquiv.mk_coe'
 
-/- warning: ring_equiv.symm_mk -> RingEquiv.symm_mk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_mk RingEquiv.symm_mkₓ'. -/
 @[simp]
 theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
     (mk f g h₁ h₂ h₃ h₄).symm =
@@ -440,117 +294,63 @@ theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
   rfl
 #align ring_equiv.symm_mk RingEquiv.symm_mk
 
-/- warning: ring_equiv.trans -> RingEquiv.trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u3} S'] [_inst_6 : Add.{u3} S'], (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) -> (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) -> (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6)
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : Mul.{u1} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u1} R] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u3} S'] [_inst_6 : Add.{u3} S'], (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) -> (RingEquiv.{u2, u3} S S' _inst_2 _inst_5 _inst_4 _inst_6) -> (RingEquiv.{u1, u3} R S' _inst_1 _inst_5 _inst_3 _inst_6)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.trans RingEquiv.transₓ'. -/
 /-- Transitivity of `ring_equiv`. -/
 @[trans]
 protected def trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') : R ≃+* S' :=
   { e₁.toMulEquiv.trans e₂.toMulEquiv, e₁.toAddEquiv.trans e₂.toAddEquiv with }
 #align ring_equiv.trans RingEquiv.trans
 
-/- warning: ring_equiv.trans_apply -> RingEquiv.trans_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.trans_apply RingEquiv.trans_applyₓ'. -/
 theorem trans_apply (e₁ : R ≃+* S) (e₂ : S ≃+* S') (a : R) : e₁.trans e₂ a = e₂ (e₁ a) :=
   rfl
 #align ring_equiv.trans_apply RingEquiv.trans_apply
 
-/- warning: ring_equiv.coe_trans -> RingEquiv.coe_trans is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_trans RingEquiv.coe_transₓ'. -/
 @[simp]
 theorem coe_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') : (e₁.trans e₂ : R → S') = e₂ ∘ e₁ :=
   rfl
 #align ring_equiv.coe_trans RingEquiv.coe_trans
 
-/- warning: ring_equiv.symm_trans_apply -> RingEquiv.symm_trans_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_trans_apply RingEquiv.symm_trans_applyₓ'. -/
 @[simp]
 theorem symm_trans_apply (e₁ : R ≃+* S) (e₂ : S ≃+* S') (a : S') :
     (e₁.trans e₂).symm a = e₁.symm (e₂.symm a) :=
   rfl
 #align ring_equiv.symm_trans_apply RingEquiv.symm_trans_apply
 
-/- warning: ring_equiv.symm_trans -> RingEquiv.symm_trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u3} S'] [_inst_6 : Add.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6), Eq.{max (succ u3) (succ u1)} (RingEquiv.{u3, u1} S' R _inst_5 _inst_6 _inst_1 _inst_2) (RingEquiv.symm.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6 (RingEquiv.trans.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) (RingEquiv.trans.{u3, u2, u1} S' S R _inst_5 _inst_6 _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6 e₂) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e₁))
-but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {S' : Type.{u1}} [_inst_1 : Mul.{u3} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u3} R] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u1} S'] [_inst_6 : Add.{u1} S'] (e₁ : RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6), Eq.{max (succ u3) (succ u1)} (RingEquiv.{u1, u3} S' R _inst_5 _inst_1 _inst_6 _inst_3) (RingEquiv.symm.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6 (RingEquiv.trans.{u3, u2, u1} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) (RingEquiv.trans.{u1, u2, u3} S' S R _inst_5 _inst_2 _inst_6 _inst_4 _inst_1 _inst_3 (RingEquiv.symm.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6 e₂) (RingEquiv.symm.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e₁))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_trans RingEquiv.symm_transₓ'. -/
 theorem symm_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') : (e₁.trans e₂).symm = e₂.symm.trans e₁.symm :=
   rfl
 #align ring_equiv.symm_trans RingEquiv.symm_trans
 
-/- warning: ring_equiv.bijective -> RingEquiv.bijective is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Function.Bijective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.bijective RingEquiv.bijectiveₓ'. -/
 protected theorem bijective (e : R ≃+* S) : Function.Bijective e :=
   EquivLike.bijective e
 #align ring_equiv.bijective RingEquiv.bijective
 
-/- warning: ring_equiv.injective -> RingEquiv.injective is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Function.Injective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Function.Injective.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.injective RingEquiv.injectiveₓ'. -/
 protected theorem injective (e : R ≃+* S) : Function.Injective e :=
   EquivLike.injective e
 #align ring_equiv.injective RingEquiv.injective
 
-/- warning: ring_equiv.surjective -> RingEquiv.surjective is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Function.Surjective.{succ u1, succ u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Function.Surjective.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.surjective RingEquiv.surjectiveₓ'. -/
 protected theorem surjective (e : R ≃+* S) : Function.Surjective e :=
   EquivLike.surjective e
 #align ring_equiv.surjective RingEquiv.surjective
 
-/- warning: ring_equiv.apply_symm_apply -> RingEquiv.apply_symm_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.apply_symm_apply RingEquiv.apply_symm_applyₓ'. -/
 @[simp]
 theorem apply_symm_apply (e : R ≃+* S) : ∀ x, e (e.symm x) = x :=
   e.toEquiv.apply_symm_apply
 #align ring_equiv.apply_symm_apply RingEquiv.apply_symm_apply
 
-/- warning: ring_equiv.symm_apply_apply -> RingEquiv.symm_apply_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_apply_apply RingEquiv.symm_apply_applyₓ'. -/
 @[simp]
 theorem symm_apply_apply (e : R ≃+* S) : ∀ x, e.symm (e x) = x :=
   e.toEquiv.symm_apply_apply
 #align ring_equiv.symm_apply_apply RingEquiv.symm_apply_apply
 
-/- warning: ring_equiv.image_eq_preimage -> RingEquiv.image_eq_preimage is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.image_eq_preimage RingEquiv.image_eq_preimageₓ'. -/
 theorem image_eq_preimage (e : R ≃+* S) (s : Set R) : e '' s = e.symm ⁻¹' s :=
   e.toEquiv.image_eq_preimage s
 #align ring_equiv.image_eq_preimage RingEquiv.image_eq_preimage
 
-/- warning: ring_equiv.coe_mul_equiv_trans -> RingEquiv.coe_mulEquiv_trans is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_mul_equiv_trans RingEquiv.coe_mulEquiv_transₓ'. -/
 @[simp]
 theorem coe_mulEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R ≃* S') = (e₁ : R ≃* S).trans ↑e₂ :=
   rfl
 #align ring_equiv.coe_mul_equiv_trans RingEquiv.coe_mulEquiv_trans
 
-/- warning: ring_equiv.coe_add_equiv_trans -> RingEquiv.coe_addEquiv_trans is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_add_equiv_trans RingEquiv.coe_addEquiv_transₓ'. -/
 @[simp]
 theorem coe_addEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R ≃+ S') = (e₁ : R ≃+ S).trans ↑e₂ :=
@@ -563,12 +363,6 @@ section Opposite
 
 open MulOpposite
 
-/- warning: ring_equiv.op -> RingEquiv.op is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} α β _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.hasMul.{u1} α _inst_2) (MulOpposite.hasAdd.{u1} α _inst_1) (MulOpposite.hasMul.{u2} β _inst_4) (MulOpposite.hasAdd.{u2} β _inst_3))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} α β _inst_2 _inst_4 _inst_1 _inst_3) (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.mul.{u1} α _inst_2) (MulOpposite.mul.{u2} β _inst_4) (MulOpposite.add.{u1} α _inst_1) (MulOpposite.add.{u2} β _inst_3))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.op RingEquiv.opₓ'. -/
 /-- A ring iso `α ≃+* β` can equivalently be viewed as a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. -/
 @[simps]
 protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] : α ≃+* β ≃ (αᵐᵒᵖ ≃+* βᵐᵒᵖ)
@@ -579,12 +373,6 @@ protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] : α ≃+* β ≃ (
   right_inv f := by ext; rfl
 #align ring_equiv.op RingEquiv.op
 
-/- warning: ring_equiv.unop -> RingEquiv.unop is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.hasMul.{u1} α _inst_2) (MulOpposite.hasAdd.{u1} α _inst_1) (MulOpposite.hasMul.{u2} β _inst_4) (MulOpposite.hasAdd.{u2} β _inst_3)) (RingEquiv.{u1, u2} α β _inst_2 _inst_1 _inst_4 _inst_3)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.mul.{u1} α _inst_2) (MulOpposite.mul.{u2} β _inst_4) (MulOpposite.add.{u1} α _inst_1) (MulOpposite.add.{u2} β _inst_3)) (RingEquiv.{u1, u2} α β _inst_2 _inst_4 _inst_1 _inst_3)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.unop RingEquiv.unopₓ'. -/
 /-- The 'unopposite' of a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. Inverse to `ring_equiv.op`. -/
 @[simp]
 protected def unop {α β} [Add α] [Mul α] [Add β] [Mul β] : αᵐᵒᵖ ≃+* βᵐᵒᵖ ≃ (α ≃+* β) :=
@@ -595,12 +383,6 @@ section NonUnitalCommSemiring
 
 variable (R) [NonUnitalCommSemiring R]
 
-/- warning: ring_equiv.to_opposite -> RingEquiv.toOpposite is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) [_inst_1 : NonUnitalCommSemiring.{u1} R], RingEquiv.{u1, u1} R (MulOpposite.{u1} R) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (MulOpposite.hasMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1))))) (MulOpposite.hasAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))))
-but is expected to have type
-  forall (R : Type.{u1}) [_inst_1 : NonUnitalCommSemiring.{u1} R], RingEquiv.{u1, u1} R (MulOpposite.{u1} R) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1))) (MulOpposite.mul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (MulOpposite.add.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_opposite RingEquiv.toOppositeₓ'. -/
 /-- A non-unital commutative ring is isomorphic to its opposite. -/
 def toOpposite : R ≃+* Rᵐᵒᵖ :=
   { MulOpposite.opEquiv with
@@ -630,12 +412,6 @@ section NonUnitalSemiring
 
 variable [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] (f : R ≃+* S) (x y : R)
 
-/- warning: ring_equiv.map_zero -> RingEquiv.map_zero is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) f (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1)))))) (OfNat.ofNat.{u2} S 0 (OfNat.mk.{u2} S 0 (Zero.zero.{u2} S (MulZeroClass.toHasZero.{u2} S (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} S _inst_2)))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))))))) f (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1))))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1))))) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1))))) (MulZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1))))) (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1))))) _inst_2))))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_zero RingEquiv.map_zeroₓ'. -/
 /-- A ring isomorphism sends zero to zero. -/
 protected theorem map_zero : f 0 = 0 :=
   map_zero f
@@ -643,32 +419,14 @@ protected theorem map_zero : f 0 = 0 :=
 
 variable {x}
 
-/- warning: ring_equiv.map_eq_zero_iff -> RingEquiv.map_eq_zero_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) {x : R}, Iff (Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) f x) (OfNat.ofNat.{u2} S 0 (OfNat.mk.{u2} S 0 (Zero.zero.{u2} S (MulZeroClass.toHasZero.{u2} S (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} S _inst_2)))))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1))))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) {x : R}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))))))) f x) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (MulZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2))))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_eq_zero_iff RingEquiv.map_eq_zero_iffₓ'. -/
 protected theorem map_eq_zero_iff : f x = 0 ↔ x = 0 :=
   AddEquivClass.map_eq_zero_iff f
 #align ring_equiv.map_eq_zero_iff RingEquiv.map_eq_zero_iff
 
-/- warning: ring_equiv.map_ne_zero_iff -> RingEquiv.map_ne_zero_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) {x : R}, Iff (Ne.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) f x) (OfNat.ofNat.{u2} S 0 (OfNat.mk.{u2} S 0 (Zero.zero.{u2} S (MulZeroClass.toHasZero.{u2} S (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} S _inst_2)))))) (Ne.{succ u1} R x (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1))))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) {x : R}, Iff (Ne.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))))))) f x) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) 0 (Zero.toOfNat0.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (MulZeroClass.toZero.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2))))) (Ne.{succ u1} R x (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MulZeroClass.toZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_ne_zero_iff RingEquiv.map_ne_zero_iffₓ'. -/
 theorem map_ne_zero_iff : f x ≠ 0 ↔ x ≠ 0 :=
   AddEquivClass.map_ne_zero_iff f
 #align ring_equiv.map_ne_zero_iff RingEquiv.map_ne_zero_iff
 
-/- warning: ring_equiv.of_bijective -> RingEquiv.ofBijective is a dubious translation:
-lean 3 declaration is
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)) -> (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
-but is expected to have type
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (FunLike.coe.{succ u1, succ u2, succ u3} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3)) f)) -> (RingEquiv.{u2, u3} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.of_bijective RingEquiv.ofBijectiveₓ'. -/
 /-- Produce a ring isomorphism from a bijective ring homomorphism. -/
 noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
     R ≃+* S :=
@@ -677,32 +435,17 @@ noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Functi
     map_add' := map_add f }
 #align ring_equiv.of_bijective RingEquiv.ofBijective
 
-/- warning: ring_equiv.coe_of_bijective -> RingEquiv.coe_ofBijective is a dubious translation:
-lean 3 declaration is
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)), Eq.{max (succ u2) (succ u3)} ((fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)
-but is expected to have type
-  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)), Eq.{max (succ u2) (succ u1)} (forall (a : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf)) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_of_bijective RingEquiv.coe_ofBijectiveₓ'. -/
 @[simp]
 theorem coe_ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
     (ofBijective f hf : R → S) = f :=
   rfl
 #align ring_equiv.coe_of_bijective RingEquiv.coe_ofBijective
 
-/- warning: ring_equiv.of_bijective_apply -> RingEquiv.ofBijective_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.of_bijective_apply RingEquiv.ofBijective_applyₓ'. -/
 theorem ofBijective_apply [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f)
     (x : R) : ofBijective f hf x = f x :=
   rfl
 #align ring_equiv.of_bijective_apply RingEquiv.ofBijective_apply
 
-/- warning: ring_equiv.Pi_congr_right -> RingEquiv.piCongrRight is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {R : ι -> Type.{u2}} {S : ι -> Type.{u3}} [_inst_3 : forall (i : ι), NonUnitalNonAssocSemiring.{u2} (R i)] [_inst_4 : forall (i : ι), NonUnitalNonAssocSemiring.{u3} (S i)], (forall (i : ι), RingEquiv.{u2, u3} (R i) (S i) (Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i))) (Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) -> (RingEquiv.{max u1 u2, max u1 u3} (forall (i : ι), R i) (forall (i : ι), S i) (Pi.instMul.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instMul.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) (Pi.instAdd.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))))
-but is expected to have type
-  forall {ι : Type.{u1}} {R : ι -> Type.{u2}} {S : ι -> Type.{u3}} [_inst_3 : forall (i : ι), NonUnitalNonAssocSemiring.{u2} (R i)] [_inst_4 : forall (i : ι), NonUnitalNonAssocSemiring.{u3} (S i)], (forall (i : ι), RingEquiv.{u2, u3} (R i) (S i) (NonUnitalNonAssocSemiring.toMul.{u2} (R i) (_inst_3 i)) (NonUnitalNonAssocSemiring.toMul.{u3} (S i) (_inst_4 i)) (Distrib.toAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) -> (RingEquiv.{max u1 u2, max u1 u3} (forall (i : ι), R i) (forall (i : ι), S i) (Pi.instMul.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u2} (R i) (_inst_3 i))) (Pi.instMul.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u3} (S i) (_inst_4 i))) (Pi.instAdd.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.Pi_congr_right RingEquiv.piCongrRightₓ'. -/
 /-- A family of ring isomorphisms `Π j, (R j ≃+* S j)` generates a
 ring isomorphisms between `Π j, R j` and `Π j, S j`.
 
@@ -719,24 +462,12 @@ def piCongrRight {ι : Type _} {R S : ι → Type _} [∀ i, NonUnitalNonAssocSe
     invFun := fun x j => (e j).symm (x j) }
 #align ring_equiv.Pi_congr_right RingEquiv.piCongrRight
 
-/- warning: ring_equiv.Pi_congr_right_refl -> RingEquiv.piCongrRight_refl is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {R : ι -> Type.{u2}} [_inst_3 : forall (i : ι), NonUnitalNonAssocSemiring.{u2} (R i)], Eq.{succ (max u1 u2)} (RingEquiv.{max u1 u2, max u1 u2} (forall (i : ι), R i) (forall (i : ι), R i) (Pi.instMul.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instMul.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))))) (RingEquiv.piCongrRight.{u1, u2, u2} ι (fun (i : ι) => R i) (fun (i : ι) => R i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => RingEquiv.refl.{u2} (R i) (Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))))) (RingEquiv.refl.{max u1 u2} (forall (i : ι), R i) (Pi.instMul.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))))
-but is expected to have type
-  forall {ι : Type.{u2}} {R : ι -> Type.{u1}} [_inst_3 : forall (i : ι), NonUnitalNonAssocSemiring.{u1} (R i)], Eq.{max (succ u2) (succ u1)} (RingEquiv.{max u2 u1, max u2 u1} (forall (i : ι), R i) (forall (i : ι), R i) (Pi.instMul.{u2, u1} ι (fun (i : ι) => R i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u1} (R i) (_inst_3 i))) (Pi.instMul.{u2, u1} ι (fun (i : ι) => R i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u1} (R i) (_inst_3 i))) (Pi.instAdd.{u2, u1} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toAdd.{u1} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (R i) (_inst_3 i)))) (Pi.instAdd.{u2, u1} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toAdd.{u1} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (R i) (_inst_3 i))))) (RingEquiv.piCongrRight.{u2, u1, u1} ι (fun (i : ι) => R i) (fun (i : ι) => R i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => RingEquiv.refl.{u1} (R i) (NonUnitalNonAssocSemiring.toMul.{u1} (R i) (_inst_3 i)) (Distrib.toAdd.{u1} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (R i) (_inst_3 i))))) (RingEquiv.refl.{max u2 u1} (forall (i : ι), R i) (Pi.instMul.{u2, u1} ι (fun (i : ι) => R i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u1} (R i) (_inst_3 i))) (Pi.instAdd.{u2, u1} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toAdd.{u1} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (R i) (_inst_3 i)))))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.Pi_congr_right_refl RingEquiv.piCongrRight_reflₓ'. -/
 @[simp]
 theorem piCongrRight_refl {ι : Type _} {R : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)] :
     (piCongrRight fun i => RingEquiv.refl (R i)) = RingEquiv.refl _ :=
   rfl
 #align ring_equiv.Pi_congr_right_refl RingEquiv.piCongrRight_refl
 
-/- warning: ring_equiv.Pi_congr_right_symm -> RingEquiv.piCongrRight_symm is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {R : ι -> Type.{u2}} {S : ι -> Type.{u3}} [_inst_3 : forall (i : ι), NonUnitalNonAssocSemiring.{u2} (R i)] [_inst_4 : forall (i : ι), NonUnitalNonAssocSemiring.{u3} (S i)] (e : forall (i : ι), RingEquiv.{u2, u3} (R i) (S i) (Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i))) (Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))), Eq.{max (succ (max u1 u3)) (succ (max u1 u2))} (RingEquiv.{max u1 u3, max u1 u2} (forall (i : ι), S i) (forall (i : ι), R i) (Pi.instMul.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) (Pi.instAdd.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) (Pi.instMul.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))))) (RingEquiv.symm.{max u1 u2, max u1 u3} (forall (i : ι), R i) (forall (i : ι), S i) (Pi.instMul.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instMul.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) (Pi.instAdd.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) (RingEquiv.piCongrRight.{u1, u2, u3} ι (fun (i : ι) => R i) (fun (i : ι) => S i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => _inst_4 i) e)) (RingEquiv.piCongrRight.{u1, u3, u2} ι (fun (i : ι) => S i) (fun (i : ι) => R i) (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => RingEquiv.symm.{u2, u3} (R i) (S i) (Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i))) (Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i))) (e i)))
-but is expected to have type
-  forall {ι : Type.{u3}} {R : ι -> Type.{u2}} {S : ι -> Type.{u1}} [_inst_3 : forall (i : ι), NonUnitalNonAssocSemiring.{u2} (R i)] [_inst_4 : forall (i : ι), NonUnitalNonAssocSemiring.{u1} (S i)] (e : forall (i : ι), RingEquiv.{u2, u1} (R i) (S i) (NonUnitalNonAssocSemiring.toMul.{u2} (R i) (_inst_3 i)) (NonUnitalNonAssocSemiring.toMul.{u1} (S i) (_inst_4 i)) (Distrib.toAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toAdd.{u1} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (S i) (_inst_4 i)))), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (RingEquiv.{max u3 u1, max u3 u2} (forall (i : ι), S i) (forall (i : ι), R i) (Pi.instMul.{u3, u1} ι (fun (i : ι) => S i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u1} (S i) (_inst_4 i))) (Pi.instMul.{u3, u2} ι (fun (i : ι) => R i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u2} (R i) (_inst_3 i))) (Pi.instAdd.{u3, u1} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toAdd.{u1} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (S i) (_inst_4 i)))) (Pi.instAdd.{u3, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))))) (RingEquiv.symm.{max u3 u2, max u3 u1} (forall (i : ι), R i) (forall (i : ι), S i) (Pi.instMul.{u3, u2} ι (fun (i : ι) => R i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u2} (R i) (_inst_3 i))) (Pi.instMul.{u3, u1} ι (fun (i : ι) => S i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u1} (S i) (_inst_4 i))) (Pi.instAdd.{u3, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u3, u1} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toAdd.{u1} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (S i) (_inst_4 i)))) (RingEquiv.piCongrRight.{u3, u2, u1} ι (fun (i : ι) => R i) (fun (i : ι) => S i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => _inst_4 i) e)) (RingEquiv.piCongrRight.{u3, u1, u2} ι (fun (i : ι) => S i) (fun (i : ι) => R i) (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => RingEquiv.symm.{u2, u1} (R i) (S i) (NonUnitalNonAssocSemiring.toMul.{u2} (R i) (_inst_3 i)) (NonUnitalNonAssocSemiring.toMul.{u1} (S i) (_inst_4 i)) (Distrib.toAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toAdd.{u1} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (S i) (_inst_4 i))) (e i)))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.Pi_congr_right_symm RingEquiv.piCongrRight_symmₓ'. -/
 @[simp]
 theorem piCongrRight_symm {ι : Type _} {R S : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)]
     [∀ i, NonUnitalNonAssocSemiring (S i)] (e : ∀ i, R i ≃+* S i) :
@@ -744,12 +475,6 @@ theorem piCongrRight_symm {ι : Type _} {R S : ι → Type _} [∀ i, NonUnitalN
   rfl
 #align ring_equiv.Pi_congr_right_symm RingEquiv.piCongrRight_symm
 
-/- warning: ring_equiv.Pi_congr_right_trans -> RingEquiv.piCongrRight_trans is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {R : ι -> Type.{u2}} {S : ι -> Type.{u3}} {T : ι -> Type.{u4}} [_inst_3 : forall (i : ι), NonUnitalNonAssocSemiring.{u2} (R i)] [_inst_4 : forall (i : ι), NonUnitalNonAssocSemiring.{u3} (S i)] [_inst_5 : forall (i : ι), NonUnitalNonAssocSemiring.{u4} (T i)] (e : forall (i : ι), RingEquiv.{u2, u3} (R i) (S i) (Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i))) (Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) (f : forall (i : ι), RingEquiv.{u3, u4} (S i) (T i) (Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i))) (Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i))) (Distrib.toHasMul.{u4} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u4} (T i) (_inst_5 i))) (Distrib.toHasAdd.{u4} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u4} (T i) (_inst_5 i)))), Eq.{max (succ (max u1 u2)) (succ (max u1 u4))} (RingEquiv.{max u1 u2, max u1 u4} (forall (i : ι), R i) (forall (i : ι), T i) (Pi.instMul.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instMul.{u1, u4} ι (fun (i : ι) => T i) (fun (i : ι) => Distrib.toHasMul.{u4} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u4} (T i) (_inst_5 i)))) (Pi.instAdd.{u1, u4} ι (fun (i : ι) => T i) (fun (i : ι) => Distrib.toHasAdd.{u4} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u4} (T i) (_inst_5 i))))) (RingEquiv.trans.{max u1 u2, max u1 u3, max u1 u4} (forall (i : ι), R i) (forall (i : ι), S i) (forall (i : ι), T i) (Pi.instMul.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instAdd.{u1, u2} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i)))) (Pi.instMul.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) (Pi.instAdd.{u1, u3} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i)))) (Pi.instMul.{u1, u4} ι (fun (i : ι) => T i) (fun (i : ι) => Distrib.toHasMul.{u4} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u4} (T i) (_inst_5 i)))) (Pi.instAdd.{u1, u4} ι (fun (i : ι) => T i) (fun (i : ι) => Distrib.toHasAdd.{u4} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u4} (T i) (_inst_5 i)))) (RingEquiv.piCongrRight.{u1, u2, u3} ι (fun (i : ι) => R i) (fun (i : ι) => S i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => _inst_4 i) e) (RingEquiv.piCongrRight.{u1, u3, u4} ι (fun (i : ι) => S i) (fun (i : ι) => T i) (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f)) (RingEquiv.piCongrRight.{u1, u2, u4} ι (fun (i : ι) => R i) (fun (i : ι) => T i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => _inst_5 i) (fun (i : ι) => RingEquiv.trans.{u2, u3, u4} (R i) (S i) (T i) (Distrib.toHasMul.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasAdd.{u2} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (R i) (_inst_3 i))) (Distrib.toHasMul.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i))) (Distrib.toHasAdd.{u3} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (S i) (_inst_4 i))) (Distrib.toHasMul.{u4} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u4} (T i) (_inst_5 i))) (Distrib.toHasAdd.{u4} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u4} (T i) (_inst_5 i))) (e i) (f i)))
-but is expected to have type
-  forall {ι : Type.{u4}} {R : ι -> Type.{u3}} {S : ι -> Type.{u2}} {T : ι -> Type.{u1}} [_inst_3 : forall (i : ι), NonUnitalNonAssocSemiring.{u3} (R i)] [_inst_4 : forall (i : ι), NonUnitalNonAssocSemiring.{u2} (S i)] [_inst_5 : forall (i : ι), NonUnitalNonAssocSemiring.{u1} (T i)] (e : forall (i : ι), RingEquiv.{u3, u2} (R i) (S i) (NonUnitalNonAssocSemiring.toMul.{u3} (R i) (_inst_3 i)) (NonUnitalNonAssocSemiring.toMul.{u2} (S i) (_inst_4 i)) (Distrib.toAdd.{u3} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (R i) (_inst_3 i))) (Distrib.toAdd.{u2} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (S i) (_inst_4 i)))) (f : forall (i : ι), RingEquiv.{u2, u1} (S i) (T i) (NonUnitalNonAssocSemiring.toMul.{u2} (S i) (_inst_4 i)) (NonUnitalNonAssocSemiring.toMul.{u1} (T i) (_inst_5 i)) (Distrib.toAdd.{u2} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (S i) (_inst_4 i))) (Distrib.toAdd.{u1} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (T i) (_inst_5 i)))), Eq.{max (max (succ u4) (succ u3)) (succ u1)} (RingEquiv.{max u4 u3, max u4 u1} (forall (i : ι), R i) (forall (i : ι), T i) (Pi.instMul.{u4, u3} ι (fun (i : ι) => R i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u3} (R i) (_inst_3 i))) (Pi.instMul.{u4, u1} ι (fun (i : ι) => T i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u1} (T i) (_inst_5 i))) (Pi.instAdd.{u4, u3} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toAdd.{u3} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (R i) (_inst_3 i)))) (Pi.instAdd.{u4, u1} ι (fun (i : ι) => T i) (fun (i : ι) => Distrib.toAdd.{u1} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (T i) (_inst_5 i))))) (RingEquiv.trans.{max u4 u3, max u4 u2, max u4 u1} (forall (i : ι), R i) (forall (i : ι), S i) (forall (i : ι), T i) (Pi.instMul.{u4, u3} ι (fun (i : ι) => R i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u3} (R i) (_inst_3 i))) (Pi.instMul.{u4, u2} ι (fun (i : ι) => S i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u2} (S i) (_inst_4 i))) (Pi.instAdd.{u4, u3} ι (fun (i : ι) => R i) (fun (i : ι) => Distrib.toAdd.{u3} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (R i) (_inst_3 i)))) (Pi.instAdd.{u4, u2} ι (fun (i : ι) => S i) (fun (i : ι) => Distrib.toAdd.{u2} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (S i) (_inst_4 i)))) (Pi.instMul.{u4, u1} ι (fun (i : ι) => T i) (fun (i : ι) => NonUnitalNonAssocSemiring.toMul.{u1} (T i) (_inst_5 i))) (Pi.instAdd.{u4, u1} ι (fun (i : ι) => T i) (fun (i : ι) => Distrib.toAdd.{u1} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (T i) (_inst_5 i)))) (RingEquiv.piCongrRight.{u4, u3, u2} ι (fun (i : ι) => R i) (fun (i : ι) => S i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => _inst_4 i) e) (RingEquiv.piCongrRight.{u4, u2, u1} ι (fun (i : ι) => S i) (fun (i : ι) => T i) (fun (i : ι) => _inst_4 i) (fun (i : ι) => _inst_5 i) f)) (RingEquiv.piCongrRight.{u4, u3, u1} ι (fun (i : ι) => R i) (fun (i : ι) => T i) (fun (i : ι) => _inst_3 i) (fun (i : ι) => _inst_5 i) (fun (i : ι) => RingEquiv.trans.{u3, u2, u1} (R i) (S i) (T i) (NonUnitalNonAssocSemiring.toMul.{u3} (R i) (_inst_3 i)) (NonUnitalNonAssocSemiring.toMul.{u2} (S i) (_inst_4 i)) (Distrib.toAdd.{u3} (R i) (NonUnitalNonAssocSemiring.toDistrib.{u3} (R i) (_inst_3 i))) (Distrib.toAdd.{u2} (S i) (NonUnitalNonAssocSemiring.toDistrib.{u2} (S i) (_inst_4 i))) (NonUnitalNonAssocSemiring.toMul.{u1} (T i) (_inst_5 i)) (Distrib.toAdd.{u1} (T i) (NonUnitalNonAssocSemiring.toDistrib.{u1} (T i) (_inst_5 i))) (e i) (f i)))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.Pi_congr_right_trans RingEquiv.piCongrRight_transₓ'. -/
 @[simp]
 theorem piCongrRight_trans {ι : Type _} {R S T : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)]
     [∀ i, NonUnitalNonAssocSemiring (S i)] [∀ i, NonUnitalNonAssocSemiring (T i)]
@@ -764,12 +489,6 @@ section Semiring
 
 variable [NonAssocSemiring R] [NonAssocSemiring S] (f : R ≃+* S) (x y : R)
 
-/- warning: ring_equiv.map_one -> RingEquiv.map_one is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1))))))) (OfNat.ofNat.{u2} S 1 (OfNat.mk.{u2} S 1 (One.one.{u2} S (AddMonoidWithOne.toOne.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2))))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocSemiring.toOne.{u1} R _inst_1)))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocSemiring.toOne.{u1} R _inst_1)))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocSemiring.toOne.{u1} R _inst_1)))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocSemiring.toOne.{u1} R _inst_1)))) (NonAssocSemiring.toOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocSemiring.toOne.{u1} R _inst_1)))) _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_one RingEquiv.map_oneₓ'. -/
 /-- A ring isomorphism sends one to one. -/
 protected theorem map_one : f 1 = 1 :=
   map_one f
@@ -777,33 +496,18 @@ protected theorem map_one : f 1 = 1 :=
 
 variable {x}
 
-/- warning: ring_equiv.map_eq_one_iff -> RingEquiv.map_eq_one_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_eq_one_iff RingEquiv.map_eq_one_iffₓ'. -/
 protected theorem map_eq_one_iff : f x = 1 ↔ x = 1 :=
   MulEquivClass.map_eq_one_iff f
 #align ring_equiv.map_eq_one_iff RingEquiv.map_eq_one_iff
 
-/- warning: ring_equiv.map_ne_one_iff -> RingEquiv.map_ne_one_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_ne_one_iff RingEquiv.map_ne_one_iffₓ'. -/
 theorem map_ne_one_iff : f x ≠ 1 ↔ x ≠ 1 :=
   MulEquivClass.map_ne_one_iff f
 #align ring_equiv.map_ne_one_iff RingEquiv.map_ne_one_iff
 
-/- warning: ring_equiv.coe_monoid_hom_refl -> RingEquiv.coe_monoidHom_refl is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : NonAssocSemiring.{u1} R], Eq.{succ u1} (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (HasLiftT.mk.{succ u1, succ u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (CoeTCₓ.coe.{succ u1, succ u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (MonoidHom.hasCoeT.{u1, u1, u1} R R (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (RingHomClass.toMonoidHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquivClass.toRingHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquiv.ringEquivClass.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))))) (RingEquiv.refl.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) (MonoidHom.id.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonAssocSemiring.{u1} R], Eq.{succ u1} (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (MonoidHomClass.toMonoidHom.{u1, u1, u1} R R (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (RingHomClass.toMonoidHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquivClass.toRingHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquiv.instRingEquivClassRingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (RingEquiv.refl.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) (MonoidHom.id.{u1} R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_monoid_hom_refl RingEquiv.coe_monoidHom_reflₓ'. -/
 theorem coe_monoidHom_refl : (RingEquiv.refl R : R →* R) = MonoidHom.id R :=
   rfl
 #align ring_equiv.coe_monoid_hom_refl RingEquiv.coe_monoidHom_refl
 
-/- warning: ring_equiv.coe_add_monoid_hom_refl -> RingEquiv.coe_addMonoidHom_refl is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_add_monoid_hom_refl RingEquiv.coe_addMonoidHom_reflₓ'. -/
 @[simp]
 theorem coe_addMonoidHom_refl : (RingEquiv.refl R : R →+ R) = AddMonoidHom.id R :=
   rfl
@@ -813,29 +517,17 @@ theorem coe_addMonoidHom_refl : (RingEquiv.refl R : R →+ R) = AddMonoidHom.id
 in higher generality -/
 
 
-/- warning: ring_equiv.coe_ring_hom_refl -> RingEquiv.coe_ringHom_refl is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : NonAssocSemiring.{u1} R], Eq.{succ u1} (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (HasLiftT.mk.{succ u1, succ u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (CoeTCₓ.coe.{succ u1, succ u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (MonoidHom.hasCoeT.{u1, u1, u1} R R (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (RingHomClass.toMonoidHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquivClass.toRingHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquiv.ringEquivClass.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))))) (RingEquiv.refl.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (RingHom.{u1, u1} R R _inst_1 _inst_1) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (HasLiftT.mk.{succ u1, succ u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (CoeTCₓ.coe.{succ u1, succ u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (MonoidHom.hasCoeT.{u1, u1, u1} R R (RingHom.{u1, u1} R R _inst_1 _inst_1) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (RingHomClass.toMonoidHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) R R _inst_1 _inst_1 (RingHom.ringHomClass.{u1, u1} R R _inst_1 _inst_1))))) (RingHom.id.{u1} R _inst_1))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonAssocSemiring.{u1} R], Eq.{succ u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) (RingHomClass.toRingHom.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquivClass.toRingHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquiv.instRingEquivClassRingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) (RingEquiv.refl.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) (RingHom.id.{u1} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_ring_hom_refl RingEquiv.coe_ringHom_reflₓ'. -/
 @[simp]
 theorem coe_ringHom_refl : (RingEquiv.refl R : R →* R) = RingHom.id R :=
   rfl
 #align ring_equiv.coe_ring_hom_refl RingEquiv.coe_ringHom_refl
 
-/- warning: ring_equiv.coe_monoid_hom_trans -> RingEquiv.coe_monoidHom_trans is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_monoid_hom_trans RingEquiv.coe_monoidHom_transₓ'. -/
 @[simp]
 theorem coe_monoidHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R →* S') = (e₂ : S →* S').comp ↑e₁ :=
   rfl
 #align ring_equiv.coe_monoid_hom_trans RingEquiv.coe_monoidHom_trans
 
-/- warning: ring_equiv.coe_add_monoid_hom_trans -> RingEquiv.coe_addMonoidHom_trans is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_add_monoid_hom_trans RingEquiv.coe_addMonoidHom_transₓ'. -/
 @[simp]
 theorem coe_addMonoidHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R →+ S') = (e₂ : S →+ S').comp ↑e₁ :=
@@ -846,26 +538,17 @@ theorem coe_addMonoidHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ :
 in higher generality -/
 
 
-/- warning: ring_equiv.coe_ring_hom_trans -> RingEquiv.coe_ringHom_trans is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_ring_hom_trans RingEquiv.coe_ringHom_transₓ'. -/
 @[simp]
 theorem coe_ringHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂ : R →+* S') = (e₂ : S →+* S').comp ↑e₁ :=
   rfl
 #align ring_equiv.coe_ring_hom_trans RingEquiv.coe_ringHom_trans
 
-/- warning: ring_equiv.comp_symm -> RingEquiv.comp_symm is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.comp_symm RingEquiv.comp_symmₓ'. -/
 @[simp]
 theorem comp_symm (e : R ≃+* S) : (e : R →+* S).comp (e.symm : S →+* R) = RingHom.id S :=
   RingHom.ext e.apply_symm_apply
 #align ring_equiv.comp_symm RingEquiv.comp_symm
 
-/- warning: ring_equiv.symm_comp -> RingEquiv.symm_comp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_comp RingEquiv.symm_compₓ'. -/
 @[simp]
 theorem symm_comp (e : R ≃+* S) : (e.symm : S →+* R).comp (e : R →+* S) = RingHom.id R :=
   RingHom.ext e.symm_apply_apply
@@ -877,16 +560,10 @@ section NonUnitalRing
 
 variable [NonUnitalNonAssocRing R] [NonUnitalNonAssocRing S] (f : R ≃+* S) (x y : R)
 
-/- warning: ring_equiv.map_neg -> RingEquiv.map_neg is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_neg RingEquiv.map_negₓ'. -/
 protected theorem map_neg : f (-x) = -f x :=
   map_neg f x
 #align ring_equiv.map_neg RingEquiv.map_neg
 
-/- warning: ring_equiv.map_sub -> RingEquiv.map_sub is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_sub RingEquiv.map_subₓ'. -/
 protected theorem map_sub : f (x - y) = f x - f y :=
   map_sub f x y
 #align ring_equiv.map_sub RingEquiv.map_sub
@@ -897,17 +574,11 @@ section Ring
 
 variable [NonAssocRing R] [NonAssocRing S] (f : R ≃+* S) (x y : R)
 
-/- warning: ring_equiv.map_neg_one -> RingEquiv.map_neg_one is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_neg_one RingEquiv.map_neg_oneₓ'. -/
 @[simp]
 theorem map_neg_one : f (-1) = -1 :=
   f.map_one ▸ f.map_neg 1
 #align ring_equiv.map_neg_one RingEquiv.map_neg_one
 
-/- warning: ring_equiv.map_eq_neg_one_iff -> RingEquiv.map_eq_neg_one_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_eq_neg_one_iff RingEquiv.map_eq_neg_one_iffₓ'. -/
 theorem map_eq_neg_one_iff {x : R} : f x = -1 ↔ x = -1 := by
   rw [← neg_eq_iff_eq_neg, ← neg_eq_iff_eq_neg, ← map_neg, RingEquiv.map_eq_one_iff]
 #align ring_equiv.map_eq_neg_one_iff RingEquiv.map_eq_neg_one_iff
@@ -918,67 +589,31 @@ section NonUnitalSemiringHom
 
 variable [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] [NonUnitalNonAssocSemiring S']
 
-/- warning: ring_equiv.to_non_unital_ring_hom -> RingEquiv.toNonUnitalRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S], (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) -> (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2)
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S], (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) -> (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom RingEquiv.toNonUnitalRingHomₓ'. -/
 /-- Reinterpret a ring equivalence as a non-unital ring homomorphism. -/
 def toNonUnitalRingHom (e : R ≃+* S) : R →ₙ+* S :=
   { e.toMulEquiv.toMulHom, e.toAddEquiv.toAddMonoidHom with }
 #align ring_equiv.to_non_unital_ring_hom RingEquiv.toNonUnitalRingHom
 
-/- warning: ring_equiv.to_non_unital_ring_hom_injective -> RingEquiv.toNonUnitalRingHom_injective is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S], Function.Injective.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_injective RingEquiv.toNonUnitalRingHom_injectiveₓ'. -/
 theorem toNonUnitalRingHom_injective :
     Function.Injective (toNonUnitalRingHom : R ≃+* S → R →ₙ+* S) := fun f g h =>
   RingEquiv.ext (NonUnitalRingHom.ext_iff.1 h)
 #align ring_equiv.to_non_unital_ring_hom_injective RingEquiv.toNonUnitalRingHom_injective
 
-/- warning: ring_equiv.has_coe_to_non_unital_ring_hom -> RingEquiv.instCoeToNonUnitalRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S], Coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2)
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S], Coe.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.has_coe_to_non_unital_ring_hom RingEquiv.instCoeToNonUnitalRingHomₓ'. -/
 /- The instance priority is lowered here so that in the case when `R` and `S` are both unital, Lean
 will first find and use `ring_equiv.has_coe_to_ring_hom`. -/
 instance (priority := 900) instCoeToNonUnitalRingHom : Coe (R ≃+* S) (R →ₙ+* S) :=
   ⟨RingEquiv.toNonUnitalRingHom⟩
 #align ring_equiv.has_coe_to_non_unital_ring_hom RingEquiv.instCoeToNonUnitalRingHom
 
-/- warning: ring_equiv.to_non_unital_ring_hom_eq_coe -> RingEquiv.toNonUnitalRingHom_eq_coe is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))), Eq.{max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (NonUnitalRingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))))))) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 f) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)))) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_eq_coe RingEquiv.toNonUnitalRingHom_eq_coeₓ'. -/
 theorem toNonUnitalRingHom_eq_coe (f : R ≃+* S) : f.toNonUnitalRingHom = ↑f :=
   rfl
 #align ring_equiv.to_non_unital_ring_hom_eq_coe RingEquiv.toNonUnitalRingHom_eq_coe
 
-/- warning: ring_equiv.coe_to_non_unital_ring_hom -> RingEquiv.coe_toNonUnitalRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (NonUnitalRingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_non_unital_ring_hom RingEquiv.coe_toNonUnitalRingHomₓ'. -/
 @[simp, norm_cast]
 theorem coe_toNonUnitalRingHom (f : R ≃+* S) : ⇑(f : R →ₙ+* S) = f :=
   rfl
 #align ring_equiv.coe_to_non_unital_ring_hom RingEquiv.coe_toNonUnitalRingHom
 
-/- warning: ring_equiv.coe_non_unital_ring_hom_inj_iff -> RingEquiv.coe_nonUnitalRingHom_inj_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_4 : NonUnitalNonAssocSemiring.{u1} R] [_inst_5 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) (g : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))), Iff (Eq.{max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) f g) (Eq.{max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (NonUnitalRingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) R S _inst_4 _inst_5 (RingEquivClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) R S _inst_4 _inst_5 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))))))) f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (NonUnitalRingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) R S _inst_4 _inst_5 (RingEquivClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))) R S _inst_4 _inst_5 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5))))))) g))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_4 : NonUnitalNonAssocSemiring.{u2} R] [_inst_5 : NonUnitalNonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_5) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_4)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_5))) (g : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_5) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_4)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_5))), Iff (Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_5) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_4)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_5))) f g) (Eq.{max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} R S _inst_4 _inst_5) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_5) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_4)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_5))) R S _inst_4 _inst_5 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_5) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_4)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_5))) R S _inst_4 _inst_5 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_5) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_4)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_5)))) f) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_5) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_4)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_5))) R S _inst_4 _inst_5 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_5) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_4)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_5))) R S _inst_4 _inst_5 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_5) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_4)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_5)))) g))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_non_unital_ring_hom_inj_iff RingEquiv.coe_nonUnitalRingHom_inj_iffₓ'. -/
 theorem coe_nonUnitalRingHom_inj_iff {R S : Type _} [NonUnitalNonAssocSemiring R]
     [NonUnitalNonAssocSemiring S] (f g : R ≃+* S) : f = g ↔ (f : R →ₙ+* S) = g :=
   ⟨congr_arg _, fun h => ext <| NonUnitalRingHom.ext_iff.mp h⟩
@@ -991,59 +626,29 @@ theorem toNonUnitalRingHom_refl : (RingEquiv.refl R).toNonUnitalRingHom = NonUni
 #align ring_equiv.to_non_unital_ring_hom_refl RingEquiv.toNonUnitalRingHom_refl
 -/
 
-/- warning: ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply -> RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (y : S), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (NonUnitalRingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e)) y)) y
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) y
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_applyₓ'. -/
 @[simp]
 theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
     ∀ y : S, e.toNonUnitalRingHom (e.symm.toNonUnitalRingHom y) = y :=
   e.toEquiv.apply_symm_apply
 #align ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply
 
-/- warning: ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply -> RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (x : R), Eq.{succ u1} R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (NonUnitalRingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e) x)) x
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_applyₓ'. -/
 @[simp]
 theorem symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply (e : R ≃+* S) :
     ∀ x : R, e.symm.toNonUnitalRingHom (e.toNonUnitalRingHom x) = x :=
   Equiv.symm_apply_apply e.toEquiv
 #align ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply
 
-/- warning: ring_equiv.to_non_unital_ring_hom_trans -> RingEquiv.toNonUnitalRingHom_trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] [_inst_3 : NonUnitalNonAssocSemiring.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (e₂ : RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' _inst_3)) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' _inst_3))), Eq.{max (succ u1) (succ u3)} (NonUnitalRingHom.{u1, u3} R S' _inst_1 _inst_3) (RingEquiv.toNonUnitalRingHom.{u1, u3} R S' _inst_1 _inst_3 (RingEquiv.trans.{u1, u2, u3} R S S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' _inst_3)) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' _inst_3)) e₁ e₂)) (NonUnitalRingHom.comp.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 (RingEquiv.toNonUnitalRingHom.{u2, u3} S S' _inst_2 _inst_3 e₂) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e₁))
-but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {S' : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u3} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] [_inst_3 : NonUnitalNonAssocSemiring.{u1} S'] (e₁ : RingEquiv.{u3, u2} R S (NonUnitalNonAssocSemiring.toMul.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (e₂ : RingEquiv.{u2, u1} S S' (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u1} S' _inst_3) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toAdd.{u1} S' (NonUnitalNonAssocSemiring.toDistrib.{u1} S' _inst_3))), Eq.{max (succ u3) (succ u1)} (NonUnitalRingHom.{u3, u1} R S' _inst_1 _inst_3) (RingEquiv.toNonUnitalRingHom.{u3, u1} R S' _inst_1 _inst_3 (RingEquiv.trans.{u3, u2, u1} R S S' (NonUnitalNonAssocSemiring.toMul.{u3} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_2) (Distrib.toAdd.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R _inst_1)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} S' _inst_3) (Distrib.toAdd.{u1} S' (NonUnitalNonAssocSemiring.toDistrib.{u1} S' _inst_3)) e₁ e₂)) (NonUnitalRingHom.comp.{u3, u2, u1} R S S' _inst_1 _inst_2 _inst_3 (RingEquiv.toNonUnitalRingHom.{u2, u1} S S' _inst_2 _inst_3 e₂) (RingEquiv.toNonUnitalRingHom.{u3, u2} R S _inst_1 _inst_2 e₁))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_trans RingEquiv.toNonUnitalRingHom_transₓ'. -/
 @[simp]
 theorem toNonUnitalRingHom_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂).toNonUnitalRingHom = e₂.toNonUnitalRingHom.comp e₁.toNonUnitalRingHom :=
   rfl
 #align ring_equiv.to_non_unital_ring_hom_trans RingEquiv.toNonUnitalRingHom_trans
 
-/- warning: ring_equiv.to_non_unital_ring_hom_comp_symm_to_non_unital_ring_hom -> RingEquiv.toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))), Eq.{succ u2} (NonUnitalRingHom.{u2, u2} S S _inst_2 _inst_2) (NonUnitalRingHom.comp.{u2, u1, u2} S R S _inst_2 _inst_1 _inst_2 (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e) (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e))) (NonUnitalRingHom.id.{u2} S _inst_2)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{succ u1} (NonUnitalRingHom.{u1, u1} S S _inst_2 _inst_2) (NonUnitalRingHom.comp.{u1, u2, u1} S R S _inst_2 _inst_1 _inst_2 (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e))) (NonUnitalRingHom.id.{u1} S _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_comp_symm_to_non_unital_ring_hom RingEquiv.toNonUnitalRingHomm_comp_symm_toNonUnitalRingHomₓ'. -/
 @[simp]
 theorem toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom (e : R ≃+* S) :
     e.toNonUnitalRingHom.comp e.symm.toNonUnitalRingHom = NonUnitalRingHom.id _ := by ext; simp
 #align ring_equiv.to_non_unital_ring_hom_comp_symm_to_non_unital_ring_hom RingEquiv.toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom
 
-/- warning: ring_equiv.symm_to_non_unital_ring_hom_comp_to_non_unital_ring_hom -> RingEquiv.symm_toNonUnitalRingHom_comp_toNonUnitalRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))), Eq.{succ u1} (NonUnitalRingHom.{u1, u1} R R _inst_1 _inst_1) (NonUnitalRingHom.comp.{u1, u2, u1} R S R _inst_1 _inst_2 _inst_1 (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e)) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e)) (NonUnitalRingHom.id.{u1} R _inst_1)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{succ u2} (NonUnitalRingHom.{u2, u2} R R _inst_1 _inst_1) (NonUnitalRingHom.comp.{u2, u1, u2} R S R _inst_1 _inst_2 _inst_1 (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e)) (NonUnitalRingHom.id.{u2} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_non_unital_ring_hom_comp_to_non_unital_ring_hom RingEquiv.symm_toNonUnitalRingHom_comp_toNonUnitalRingHomₓ'. -/
 @[simp]
 theorem symm_toNonUnitalRingHom_comp_toNonUnitalRingHom (e : R ≃+* S) :
     e.symm.toNonUnitalRingHom.comp e.toNonUnitalRingHom = NonUnitalRingHom.id _ := by ext; simp
@@ -1055,114 +660,60 @@ section SemiringHom
 
 variable [NonAssocSemiring R] [NonAssocSemiring S] [NonAssocSemiring S']
 
-/- warning: ring_equiv.to_ring_hom -> RingEquiv.toRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S], (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) -> (RingHom.{u1, u2} R S _inst_1 _inst_2)
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S], (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) -> (RingHom.{u1, u2} R S _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom RingEquiv.toRingHomₓ'. -/
 /-- Reinterpret a ring equivalence as a ring homomorphism. -/
 def toRingHom (e : R ≃+* S) : R →+* S :=
   { e.toMulEquiv.toMonoidHom, e.toAddEquiv.toAddMonoidHom with }
 #align ring_equiv.to_ring_hom RingEquiv.toRingHom
 
-/- warning: ring_equiv.to_ring_hom_injective -> RingEquiv.toRingHom_injective is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S], Function.Injective.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S], Function.Injective.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (RingHom.{u2, u1} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom_injective RingEquiv.toRingHom_injectiveₓ'. -/
 theorem toRingHom_injective : Function.Injective (toRingHom : R ≃+* S → R →+* S) := fun f g h =>
   RingEquiv.ext (RingHom.ext_iff.1 h)
 #align ring_equiv.to_ring_hom_injective RingEquiv.toRingHom_injective
 
-/- warning: ring_equiv.has_coe_to_ring_hom -> RingEquiv.instCoeToRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S], Coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2)
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S], Coe.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.has_coe_to_ring_hom RingEquiv.instCoeToRingHomₓ'. -/
 instance instCoeToRingHom : Coe (R ≃+* S) (R →+* S) :=
   ⟨RingEquiv.toRingHom⟩
 #align ring_equiv.has_coe_to_ring_hom RingEquiv.instCoeToRingHom
 
-/- warning: ring_equiv.to_ring_hom_eq_coe -> RingEquiv.toRingHom_eq_coe is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 f) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom_eq_coe RingEquiv.toRingHom_eq_coeₓ'. -/
 theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
   rfl
 #align ring_equiv.to_ring_hom_eq_coe RingEquiv.toRingHom_eq_coe
 
-/- warning: ring_equiv.coe_to_ring_hom -> RingEquiv.coe_toRingHom is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_ring_hom RingEquiv.coe_toRingHomₓ'. -/
 @[simp, norm_cast]
 theorem coe_toRingHom (f : R ≃+* S) : ⇑(f : R →+* S) = f :=
   rfl
 #align ring_equiv.coe_to_ring_hom RingEquiv.coe_toRingHom
 
-/- warning: ring_equiv.coe_ring_hom_inj_iff -> RingEquiv.coe_ringHom_inj_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_ring_hom_inj_iff RingEquiv.coe_ringHom_inj_iffₓ'. -/
 theorem coe_ringHom_inj_iff {R S : Type _} [NonAssocSemiring R] [NonAssocSemiring S]
     (f g : R ≃+* S) : f = g ↔ (f : R →+* S) = g :=
   ⟨congr_arg _, fun h => ext <| RingHom.ext_iff.mp h⟩
 #align ring_equiv.coe_ring_hom_inj_iff RingEquiv.coe_ringHom_inj_iff
 
-/- warning: ring_equiv.to_non_unital_ring_hom_commutes -> RingEquiv.toNonUnitalRingHom_commutes is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_commutes RingEquiv.toNonUnitalRingHom_commutesₓ'. -/
 /-- The two paths coercion can take to a `non_unital_ring_hom` are equivalent -/
 @[simp, norm_cast]
 theorem toNonUnitalRingHom_commutes (f : R ≃+* S) : ((f : R →+* S) : R →ₙ+* S) = (f : R →ₙ+* S) :=
   rfl
 #align ring_equiv.to_non_unital_ring_hom_commutes RingEquiv.toNonUnitalRingHom_commutes
 
-/- warning: ring_equiv.to_monoid_hom -> RingEquiv.toMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S], (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) -> (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2)))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S], (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) -> (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2)))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_monoid_hom RingEquiv.toMonoidHomₓ'. -/
 /-- Reinterpret a ring equivalence as a monoid homomorphism. -/
 abbrev toMonoidHom (e : R ≃+* S) : R →* S :=
   e.toRingHom.toMonoidHom
 #align ring_equiv.to_monoid_hom RingEquiv.toMonoidHom
 
-/- warning: ring_equiv.to_add_monoid_hom -> RingEquiv.toAddMonoidHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S], (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) -> (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2)))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S], (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) -> (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2)))))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_add_monoid_hom RingEquiv.toAddMonoidHomₓ'. -/
 /-- Reinterpret a ring equivalence as an `add_monoid` homomorphism. -/
 abbrev toAddMonoidHom (e : R ≃+* S) : R →+ S :=
   e.toRingHom.toAddMonoidHom
 #align ring_equiv.to_add_monoid_hom RingEquiv.toAddMonoidHom
 
-/- warning: ring_equiv.to_add_monoid_hom_commutes -> RingEquiv.toAddMonoidMom_commutes is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_add_monoid_hom_commutes RingEquiv.toAddMonoidMom_commutesₓ'. -/
 /-- The two paths coercion can take to an `add_monoid_hom` are equivalent -/
 theorem toAddMonoidMom_commutes (f : R ≃+* S) :
     (f : R →+* S).toAddMonoidHom = (f : R ≃+ S).toAddMonoidHom :=
   rfl
 #align ring_equiv.to_add_monoid_hom_commutes RingEquiv.toAddMonoidMom_commutes
 
-/- warning: ring_equiv.to_monoid_hom_commutes -> RingEquiv.toMonoidHom_commutes is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_monoid_hom_commutes RingEquiv.toMonoidHom_commutesₓ'. -/
 /-- The two paths coercion can take to an `monoid_hom` are equivalent -/
 theorem toMonoidHom_commutes (f : R ≃+* S) : (f : R →+* S).toMonoidHom = (f : R ≃* S).toMonoidHom :=
   rfl
 #align ring_equiv.to_monoid_hom_commutes RingEquiv.toMonoidHom_commutes
 
-/- warning: ring_equiv.to_equiv_commutes -> RingEquiv.toEquiv_commutes is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_equiv_commutes RingEquiv.toEquiv_commutesₓ'. -/
 /-- The two paths coercion can take to an `equiv` are equivalent -/
 theorem toEquiv_commutes (f : R ≃+* S) : (f : R ≃+ S).toEquiv = (f : R ≃* S).toEquiv :=
   rfl
@@ -1189,70 +740,34 @@ theorem toAddMonoidHom_refl : (RingEquiv.refl R).toAddMonoidHom = AddMonoidHom.i
 #align ring_equiv.to_add_monoid_hom_refl RingEquiv.toAddMonoidHom_refl
 -/
 
-/- warning: ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply -> RingEquiv.toRingHom_apply_symm_toRingHom_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (y : S), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : RingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (RingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) y)) y
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) y
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_applyₓ'. -/
 @[simp]
 theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
     ∀ y : S, e.toRingHom (e.symm.toRingHom y) = y :=
   e.toEquiv.apply_symm_apply
 #align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_apply
 
-/- warning: ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply -> RingEquiv.symm_toRingHom_apply_toRingHom_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (x : R), Eq.{succ u1} R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : RingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (RingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e) x)) x
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply RingEquiv.symm_toRingHom_apply_toRingHom_applyₓ'. -/
 @[simp]
 theorem symm_toRingHom_apply_toRingHom_apply (e : R ≃+* S) :
     ∀ x : R, e.symm.toRingHom (e.toRingHom x) = x :=
   Equiv.symm_apply_apply e.toEquiv
 #align ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply RingEquiv.symm_toRingHom_apply_toRingHom_apply
 
-/- warning: ring_equiv.to_ring_hom_trans -> RingEquiv.toRingHom_trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] [_inst_3 : NonAssocSemiring.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (e₂ : RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))), Eq.{max (succ u1) (succ u3)} (RingHom.{u1, u3} R S' _inst_1 _inst_3) (RingEquiv.toRingHom.{u1, u3} R S' _inst_1 _inst_3 (RingEquiv.trans.{u1, u2, u3} R S S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) e₁ e₂)) (RingHom.comp.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 (RingEquiv.toRingHom.{u2, u3} S S' _inst_2 _inst_3 e₂) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e₁))
-but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {S' : Type.{u1}} [_inst_1 : NonAssocSemiring.{u3} R] [_inst_2 : NonAssocSemiring.{u2} S] [_inst_3 : NonAssocSemiring.{u1} S'] (e₁ : RingEquiv.{u3, u2} R S (NonUnitalNonAssocSemiring.toMul.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (e₂ : RingEquiv.{u2, u1} S S' (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u1} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S' _inst_3)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toAdd.{u1} S' (NonUnitalNonAssocSemiring.toDistrib.{u1} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S' _inst_3)))), Eq.{max (succ u3) (succ u1)} (RingHom.{u3, u1} R S' _inst_1 _inst_3) (RingEquiv.toRingHom.{u3, u1} R S' _inst_1 _inst_3 (RingEquiv.trans.{u3, u2, u1} R S S' (NonUnitalNonAssocSemiring.toMul.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u3} R (NonUnitalNonAssocSemiring.toDistrib.{u3} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (NonUnitalNonAssocSemiring.toMul.{u1} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S' _inst_3)) (Distrib.toAdd.{u1} S' (NonUnitalNonAssocSemiring.toDistrib.{u1} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S' _inst_3))) e₁ e₂)) (RingHom.comp.{u3, u2, u1} R S S' _inst_1 _inst_2 _inst_3 (RingEquiv.toRingHom.{u2, u1} S S' _inst_2 _inst_3 e₂) (RingEquiv.toRingHom.{u3, u2} R S _inst_1 _inst_2 e₁))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom_trans RingEquiv.toRingHom_transₓ'. -/
 @[simp]
 theorem toRingHom_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
     (e₁.trans e₂).toRingHom = e₂.toRingHom.comp e₁.toRingHom :=
   rfl
 #align ring_equiv.to_ring_hom_trans RingEquiv.toRingHom_trans
 
-/- warning: ring_equiv.to_ring_hom_comp_symm_to_ring_hom -> RingEquiv.toRingHom_comp_symm_toRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{succ u2} (RingHom.{u2, u2} S S _inst_2 _inst_2) (RingHom.comp.{u2, u1, u2} S R S _inst_2 _inst_1 _inst_2 (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e) (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e))) (RingHom.id.{u2} S _inst_2)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{succ u1} (RingHom.{u1, u1} S S _inst_2 _inst_2) (RingHom.comp.{u1, u2, u1} S R S _inst_2 _inst_1 _inst_2 (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e))) (RingHom.id.{u1} S _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom_comp_symm_to_ring_hom RingEquiv.toRingHom_comp_symm_toRingHomₓ'. -/
 @[simp]
 theorem toRingHom_comp_symm_toRingHom (e : R ≃+* S) :
     e.toRingHom.comp e.symm.toRingHom = RingHom.id _ := by ext; simp
 #align ring_equiv.to_ring_hom_comp_symm_to_ring_hom RingEquiv.toRingHom_comp_symm_toRingHom
 
-/- warning: ring_equiv.symm_to_ring_hom_comp_to_ring_hom -> RingEquiv.symm_toRingHom_comp_toRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{succ u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) (RingHom.comp.{u1, u2, u1} R S R _inst_1 _inst_2 _inst_1 (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e)) (RingHom.id.{u1} R _inst_1)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{succ u2} (RingHom.{u2, u2} R R _inst_1 _inst_1) (RingHom.comp.{u2, u1, u2} R S R _inst_1 _inst_2 _inst_1 (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e)) (RingHom.id.{u2} R _inst_1)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_ring_hom_comp_to_ring_hom RingEquiv.symm_toRingHom_comp_toRingHomₓ'. -/
 @[simp]
 theorem symm_toRingHom_comp_toRingHom (e : R ≃+* S) :
     e.symm.toRingHom.comp e.toRingHom = RingHom.id _ := by ext; simp
 #align ring_equiv.symm_to_ring_hom_comp_to_ring_hom RingEquiv.symm_toRingHom_comp_toRingHom
 
-/- warning: ring_equiv.of_hom_inv' -> RingEquiv.ofHomInv' is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {F : Type.{u3}} {G : Type.{u4}} [_inst_4 : NonUnitalNonAssocSemiring.{u1} R] [_inst_5 : NonUnitalNonAssocSemiring.{u2} S] [_inst_6 : NonUnitalRingHomClass.{u3, u1, u2} F R S _inst_4 _inst_5] [_inst_7 : NonUnitalRingHomClass.{u4, u2, u1} G S R _inst_5 _inst_4] (hom : F) (inv : G), (Eq.{succ u1} (NonUnitalRingHom.{u1, u1} R R _inst_4 _inst_4) (NonUnitalRingHom.comp.{u1, u2, u1} R S R _inst_4 _inst_5 _inst_4 ((fun (a : Type.{u4}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{succ u4, max (succ u2) (succ u1)} a b] => self.0) G (NonUnitalRingHom.{u2, u1} S R _inst_5 _inst_4) (HasLiftT.mk.{succ u4, max (succ u2) (succ u1)} G (NonUnitalRingHom.{u2, u1} S R _inst_5 _inst_4) (CoeTCₓ.coe.{succ u4, max (succ u2) (succ u1)} G (NonUnitalRingHom.{u2, u1} S R _inst_5 _inst_4) (NonUnitalRingHom.hasCoeT.{u4, u2, u1} G S R _inst_5 _inst_4 _inst_7))) inv) ((fun (a : Type.{u3}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u3, max (succ u1) (succ u2)} a b] => self.0) F (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (HasLiftT.mk.{succ u3, max (succ u1) (succ u2)} F (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (CoeTCₓ.coe.{succ u3, max (succ u1) (succ u2)} F (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (NonUnitalRingHom.hasCoeT.{u3, u1, u2} F R S _inst_4 _inst_5 _inst_6))) hom)) (NonUnitalRingHom.id.{u1} R _inst_4)) -> (Eq.{succ u2} (NonUnitalRingHom.{u2, u2} S S _inst_5 _inst_5) (NonUnitalRingHom.comp.{u2, u1, u2} S R S _inst_5 _inst_4 _inst_5 ((fun (a : Type.{u3}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u3, max (succ u1) (succ u2)} a b] => self.0) F (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (HasLiftT.mk.{succ u3, max (succ u1) (succ u2)} F (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (CoeTCₓ.coe.{succ u3, max (succ u1) (succ u2)} F (NonUnitalRingHom.{u1, u2} R S _inst_4 _inst_5) (NonUnitalRingHom.hasCoeT.{u3, u1, u2} F R S _inst_4 _inst_5 _inst_6))) hom) ((fun (a : Type.{u4}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{succ u4, max (succ u2) (succ u1)} a b] => self.0) G (NonUnitalRingHom.{u2, u1} S R _inst_5 _inst_4) (HasLiftT.mk.{succ u4, max (succ u2) (succ u1)} G (NonUnitalRingHom.{u2, u1} S R _inst_5 _inst_4) (CoeTCₓ.coe.{succ u4, max (succ u2) (succ u1)} G (NonUnitalRingHom.{u2, u1} S R _inst_5 _inst_4) (NonUnitalRingHom.hasCoeT.{u4, u2, u1} G S R _inst_5 _inst_4 _inst_7))) inv)) (NonUnitalRingHom.id.{u2} S _inst_5)) -> (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} {F : Type.{u3}} {G : Type.{u4}} [_inst_4 : NonUnitalNonAssocSemiring.{u1} R] [_inst_5 : NonUnitalNonAssocSemiring.{u2} S] [_inst_6 : NonUnitalRingHomClass.{u3, u1, u2} F R S _inst_4 _inst_5] [_inst_7 : NonUnitalRingHomClass.{u4, u2, u1} G S R _inst_5 _inst_4] (hom : F) (inv : G), (Eq.{succ u1} (NonUnitalRingHom.{u1, u1} R R _inst_4 _inst_4) (NonUnitalRingHom.comp.{u1, u2, u1} R S R _inst_4 _inst_5 _inst_4 (NonUnitalRingHomClass.toNonUnitalRingHom.{u4, u2, u1} G S R _inst_5 _inst_4 _inst_7 inv) (NonUnitalRingHomClass.toNonUnitalRingHom.{u3, u1, u2} F R S _inst_4 _inst_5 _inst_6 hom)) (NonUnitalRingHom.id.{u1} R _inst_4)) -> (Eq.{succ u2} (NonUnitalRingHom.{u2, u2} S S _inst_5 _inst_5) (NonUnitalRingHom.comp.{u2, u1, u2} S R S _inst_5 _inst_4 _inst_5 (NonUnitalRingHomClass.toNonUnitalRingHom.{u3, u1, u2} F R S _inst_4 _inst_5 _inst_6 hom) (NonUnitalRingHomClass.toNonUnitalRingHom.{u4, u2, u1} G S R _inst_5 _inst_4 _inst_7 inv)) (NonUnitalRingHom.id.{u2} S _inst_5)) -> (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R _inst_4) (NonUnitalNonAssocSemiring.toMul.{u2} S _inst_5) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_4)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_5)))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.of_hom_inv' RingEquiv.ofHomInv'ₓ'. -/
 /-- Construct an equivalence of rings from homomorphisms in both directions, which are inverses.
 -/
 @[simps]
@@ -1269,12 +784,6 @@ def ofHomInv' {R S F G : Type _} [NonUnitalNonAssocSemiring R] [NonUnitalNonAsso
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv' RingEquiv.ofHomInv'
 
-/- warning: ring_equiv.of_hom_inv -> RingEquiv.ofHomInv is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {F : Type.{u3}} {G : Type.{u4}} [_inst_4 : NonAssocSemiring.{u1} R] [_inst_5 : NonAssocSemiring.{u2} S] [_inst_6 : RingHomClass.{u3, u1, u2} F R S _inst_4 _inst_5] [_inst_7 : RingHomClass.{u4, u2, u1} G S R _inst_5 _inst_4] (hom : F) (inv : G), (Eq.{succ u1} (RingHom.{u1, u1} R R _inst_4 _inst_4) (RingHom.comp.{u1, u2, u1} R S R _inst_4 _inst_5 _inst_4 ((fun (a : Type.{u4}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{succ u4, max (succ u2) (succ u1)} a b] => self.0) G (RingHom.{u2, u1} S R _inst_5 _inst_4) (HasLiftT.mk.{succ u4, max (succ u2) (succ u1)} G (RingHom.{u2, u1} S R _inst_5 _inst_4) (CoeTCₓ.coe.{succ u4, max (succ u2) (succ u1)} G (RingHom.{u2, u1} S R _inst_5 _inst_4) (RingHom.hasCoeT.{u4, u2, u1} G S R _inst_5 _inst_4 _inst_7))) inv) ((fun (a : Type.{u3}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u3, max (succ u1) (succ u2)} a b] => self.0) F (RingHom.{u1, u2} R S _inst_4 _inst_5) (HasLiftT.mk.{succ u3, max (succ u1) (succ u2)} F (RingHom.{u1, u2} R S _inst_4 _inst_5) (CoeTCₓ.coe.{succ u3, max (succ u1) (succ u2)} F (RingHom.{u1, u2} R S _inst_4 _inst_5) (RingHom.hasCoeT.{u3, u1, u2} F R S _inst_4 _inst_5 _inst_6))) hom)) (RingHom.id.{u1} R _inst_4)) -> (Eq.{succ u2} (RingHom.{u2, u2} S S _inst_5 _inst_5) (RingHom.comp.{u2, u1, u2} S R S _inst_5 _inst_4 _inst_5 ((fun (a : Type.{u3}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u3, max (succ u1) (succ u2)} a b] => self.0) F (RingHom.{u1, u2} R S _inst_4 _inst_5) (HasLiftT.mk.{succ u3, max (succ u1) (succ u2)} F (RingHom.{u1, u2} R S _inst_4 _inst_5) (CoeTCₓ.coe.{succ u3, max (succ u1) (succ u2)} F (RingHom.{u1, u2} R S _inst_4 _inst_5) (RingHom.hasCoeT.{u3, u1, u2} F R S _inst_4 _inst_5 _inst_6))) hom) ((fun (a : Type.{u4}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{succ u4, max (succ u2) (succ u1)} a b] => self.0) G (RingHom.{u2, u1} S R _inst_5 _inst_4) (HasLiftT.mk.{succ u4, max (succ u2) (succ u1)} G (RingHom.{u2, u1} S R _inst_5 _inst_4) (CoeTCₓ.coe.{succ u4, max (succ u2) (succ u1)} G (RingHom.{u2, u1} S R _inst_5 _inst_4) (RingHom.hasCoeT.{u4, u2, u1} G S R _inst_5 _inst_4 _inst_7))) inv)) (RingHom.id.{u2} S _inst_5)) -> (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} {F : Type.{u3}} {G : Type.{u4}} [_inst_4 : NonAssocSemiring.{u1} R] [_inst_5 : NonAssocSemiring.{u2} S] [_inst_6 : RingHomClass.{u3, u1, u2} F R S _inst_4 _inst_5] [_inst_7 : RingHomClass.{u4, u2, u1} G S R _inst_5 _inst_4] (hom : F) (inv : G), (Eq.{succ u1} (RingHom.{u1, u1} R R _inst_4 _inst_4) (RingHom.comp.{u1, u2, u1} R S R _inst_4 _inst_5 _inst_4 (RingHomClass.toRingHom.{u4, u2, u1} G S R _inst_5 _inst_4 _inst_7 inv) (RingHomClass.toRingHom.{u3, u1, u2} F R S _inst_4 _inst_5 _inst_6 hom)) (RingHom.id.{u1} R _inst_4)) -> (Eq.{succ u2} (RingHom.{u2, u2} S S _inst_5 _inst_5) (RingHom.comp.{u2, u1, u2} S R S _inst_5 _inst_4 _inst_5 (RingHomClass.toRingHom.{u3, u1, u2} F R S _inst_4 _inst_5 _inst_6 hom) (RingHomClass.toRingHom.{u4, u2, u1} G S R _inst_5 _inst_4 _inst_7 inv)) (RingHom.id.{u2} S _inst_5)) -> (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.of_hom_inv RingEquiv.ofHomInvₓ'. -/
 /--
 Construct an equivalence of rings from unital homomorphisms in both directions, which are inverses.
 -/
@@ -1298,9 +807,6 @@ section GroupPower
 
 variable [Semiring R] [Semiring S]
 
-/- warning: ring_equiv.map_pow -> RingEquiv.map_pow is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ring_equiv.map_pow RingEquiv.map_powₓ'. -/
 protected theorem map_pow (f : R ≃+* S) (a) : ∀ n : ℕ, f (a ^ n) = f a ^ n :=
   map_pow f a
 #align ring_equiv.map_pow RingEquiv.map_pow
@@ -1311,12 +817,6 @@ end RingEquiv
 
 namespace MulEquiv
 
-/- warning: mul_equiv.to_ring_equiv -> MulEquiv.toRingEquiv is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {F : Type.{u3}} [_inst_1 : Add.{u1} R] [_inst_2 : Add.{u2} S] [_inst_3 : Mul.{u1} R] [_inst_4 : Mul.{u2} S] [_inst_5 : MulEquivClass.{u3, u1, u2} F R S _inst_3 _inst_4] (f : F), (forall (x : R) (y : R), Eq.{succ u2} S (coeFn.{succ u3, max (succ u1) (succ u2)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u3, succ u1, succ u2} F R (fun (_x : R) => S) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (MulEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_3 _inst_4 _inst_5)))) f (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_1) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_2) (coeFn.{succ u3, max (succ u1) (succ u2)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u3, succ u1, succ u2} F R (fun (_x : R) => S) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (MulEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_3 _inst_4 _inst_5)))) f x) (coeFn.{succ u3, max (succ u1) (succ u2)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u3, succ u1, succ u2} F R (fun (_x : R) => S) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (MulEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_3 _inst_4 _inst_5)))) f y))) -> (RingEquiv.{u1, u2} R S _inst_3 _inst_1 _inst_4 _inst_2)
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} {F : Type.{u3}} [_inst_1 : Add.{u1} R] [_inst_2 : Add.{u2} S] [_inst_3 : Mul.{u1} R] [_inst_4 : Mul.{u2} S] [_inst_5 : MulEquivClass.{u3, u1, u2} F R S _inst_3 _inst_4] (f : F), (forall (x : R) (y : R), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_1) x y)) (FunLike.coe.{succ u3, succ u1, succ u2} F R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (MulEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_3 _inst_4 _inst_5))) f (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_1) x y)) (HAdd.hAdd.{u2, u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) y) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (instHAdd.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2) (FunLike.coe.{succ u3, succ u1, succ u2} F R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (MulEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_3 _inst_4 _inst_5))) f x) (FunLike.coe.{succ u3, succ u1, succ u2} F R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (MulEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_3 _inst_4 _inst_5))) f y))) -> (RingEquiv.{u1, u2} R S _inst_3 _inst_4 _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align mul_equiv.to_ring_equiv MulEquiv.toRingEquivₓ'. -/
 /-- Gives a `ring_equiv` from an element of a `mul_equiv_class` preserving addition.-/
 def toRingEquiv {R S F : Type _} [Add R] [Add S] [Mul R] [Mul S] [MulEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x + y) = f x + f y) : R ≃+* S :=
@@ -1327,12 +827,6 @@ end MulEquiv
 
 namespace AddEquiv
 
-/- warning: add_equiv.to_ring_equiv -> AddEquiv.toRingEquiv is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {F : Type.{u3}} [_inst_1 : Add.{u1} R] [_inst_2 : Add.{u2} S] [_inst_3 : Mul.{u1} R] [_inst_4 : Mul.{u2} S] [_inst_5 : AddEquivClass.{u3, u1, u2} F R S _inst_1 _inst_2] (f : F), (forall (x : R) (y : R), Eq.{succ u2} S (coeFn.{succ u3, max (succ u1) (succ u2)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u3, succ u1, succ u2} F R (fun (_x : R) => S) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (AddEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_1 _inst_2 _inst_5)))) f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_3) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_4) (coeFn.{succ u3, max (succ u1) (succ u2)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u3, succ u1, succ u2} F R (fun (_x : R) => S) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (AddEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_1 _inst_2 _inst_5)))) f x) (coeFn.{succ u3, max (succ u1) (succ u2)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u3, succ u1, succ u2} F R (fun (_x : R) => S) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (AddEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_1 _inst_2 _inst_5)))) f y))) -> (RingEquiv.{u1, u2} R S _inst_3 _inst_1 _inst_4 _inst_2)
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} {F : Type.{u3}} [_inst_1 : Add.{u1} R] [_inst_2 : Add.{u2} S] [_inst_3 : Mul.{u1} R] [_inst_4 : Mul.{u2} S] [_inst_5 : AddEquivClass.{u3, u1, u2} F R S _inst_1 _inst_2] (f : F), (forall (x : R) (y : R), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_3) x y)) (FunLike.coe.{succ u3, succ u1, succ u2} F R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (AddEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_1 _inst_2 _inst_5))) f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_3) x y)) (HMul.hMul.{u2, u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) y) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (instHMul.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_4) (FunLike.coe.{succ u3, succ u1, succ u2} F R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (AddEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_1 _inst_2 _inst_5))) f x) (FunLike.coe.{succ u3, succ u1, succ u2} F R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{succ u3, succ u1, succ u2} F R S (EquivLike.toEmbeddingLike.{succ u3, succ u1, succ u2} F R S (AddEquivClass.toEquivLike.{u3, u1, u2} F R S _inst_1 _inst_2 _inst_5))) f y))) -> (RingEquiv.{u1, u2} R S _inst_3 _inst_4 _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align add_equiv.to_ring_equiv AddEquiv.toRingEquivₓ'. -/
 /-- Gives a `ring_equiv` from an element of an `add_equiv_class` preserving addition.-/
 def toRingEquiv {R S F : Type _} [Add R] [Add S] [Mul R] [Mul S] [AddEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x * y) = f x * f y) : R ≃+* S :=
@@ -1345,34 +839,16 @@ namespace RingEquiv
 
 variable [Add R] [Add S] [Mul R] [Mul S]
 
-/- warning: ring_equiv.self_trans_symm -> RingEquiv.self_trans_symm is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Add.{u1} R] [_inst_2 : Add.{u2} S] [_inst_3 : Mul.{u1} R] [_inst_4 : Mul.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_3 _inst_1 _inst_4 _inst_2), Eq.{succ u1} (RingEquiv.{u1, u1} R R _inst_3 _inst_1 _inst_3 _inst_1) (RingEquiv.trans.{u1, u2, u1} R S R _inst_3 _inst_1 _inst_4 _inst_2 _inst_3 _inst_1 e (RingEquiv.symm.{u1, u2} R S _inst_3 _inst_1 _inst_4 _inst_2 e)) (RingEquiv.refl.{u1} R _inst_3 _inst_1)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Add.{u2} R] [_inst_2 : Add.{u1} S] [_inst_3 : Mul.{u2} R] [_inst_4 : Mul.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_3 _inst_4 _inst_1 _inst_2), Eq.{succ u2} (RingEquiv.{u2, u2} R R _inst_3 _inst_3 _inst_1 _inst_1) (RingEquiv.trans.{u2, u1, u2} R S R _inst_3 _inst_4 _inst_1 _inst_2 _inst_3 _inst_1 e (RingEquiv.symm.{u2, u1} R S _inst_3 _inst_4 _inst_1 _inst_2 e)) (RingEquiv.refl.{u2} R _inst_3 _inst_1)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.self_trans_symm RingEquiv.self_trans_symmₓ'. -/
 @[simp]
 theorem self_trans_symm (e : R ≃+* S) : e.trans e.symm = RingEquiv.refl R :=
   ext e.3
 #align ring_equiv.self_trans_symm RingEquiv.self_trans_symm
 
-/- warning: ring_equiv.symm_trans_self -> RingEquiv.symm_trans_self is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Add.{u1} R] [_inst_2 : Add.{u2} S] [_inst_3 : Mul.{u1} R] [_inst_4 : Mul.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_3 _inst_1 _inst_4 _inst_2), Eq.{succ u2} (RingEquiv.{u2, u2} S S _inst_4 _inst_2 _inst_4 _inst_2) (RingEquiv.trans.{u2, u1, u2} S R S _inst_4 _inst_2 _inst_3 _inst_1 _inst_4 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_3 _inst_1 _inst_4 _inst_2 e) e) (RingEquiv.refl.{u2} S _inst_4 _inst_2)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Add.{u2} R] [_inst_2 : Add.{u1} S] [_inst_3 : Mul.{u2} R] [_inst_4 : Mul.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_3 _inst_4 _inst_1 _inst_2), Eq.{succ u1} (RingEquiv.{u1, u1} S S _inst_4 _inst_4 _inst_2 _inst_2) (RingEquiv.trans.{u1, u2, u1} S R S _inst_4 _inst_3 _inst_2 _inst_1 _inst_4 _inst_2 (RingEquiv.symm.{u2, u1} R S _inst_3 _inst_4 _inst_1 _inst_2 e) e) (RingEquiv.refl.{u1} S _inst_4 _inst_2)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_trans_self RingEquiv.symm_trans_selfₓ'. -/
 @[simp]
 theorem symm_trans_self (e : R ≃+* S) : e.symm.trans e = RingEquiv.refl S :=
   ext e.4
 #align ring_equiv.symm_trans_self RingEquiv.symm_trans_self
 
-/- warning: ring_equiv.no_zero_divisors -> RingEquiv.noZeroDivisors is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} (B : Type.{u2}) [_inst_5 : Ring.{u1} A] [_inst_6 : Ring.{u2} B] [_inst_7 : NoZeroDivisors.{u2} B (Distrib.toHasMul.{u2} B (Ring.toDistrib.{u2} B _inst_6)) (MulZeroClass.toHasZero.{u2} B (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} B (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} B (NonAssocRing.toNonUnitalNonAssocRing.{u2} B (Ring.toNonAssocRing.{u2} B _inst_6)))))], (RingEquiv.{u1, u2} A B (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A _inst_5)) (Distrib.toHasAdd.{u1} A (Ring.toDistrib.{u1} A _inst_5)) (Distrib.toHasMul.{u2} B (Ring.toDistrib.{u2} B _inst_6)) (Distrib.toHasAdd.{u2} B (Ring.toDistrib.{u2} B _inst_6))) -> (NoZeroDivisors.{u1} A (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A _inst_5)) (MulZeroClass.toHasZero.{u1} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} A (NonAssocRing.toNonUnitalNonAssocRing.{u1} A (Ring.toNonAssocRing.{u1} A _inst_5))))))
-but is expected to have type
-  forall {A : Type.{u2}} (B : Type.{u1}) [_inst_5 : Ring.{u2} A] [_inst_6 : Ring.{u1} B] [_inst_7 : NoZeroDivisors.{u1} B (NonUnitalNonAssocRing.toMul.{u1} B (NonAssocRing.toNonUnitalNonAssocRing.{u1} B (Ring.toNonAssocRing.{u1} B _inst_6))) (MonoidWithZero.toZero.{u1} B (Semiring.toMonoidWithZero.{u1} B (Ring.toSemiring.{u1} B _inst_6)))], (RingEquiv.{u2, u1} A B (NonUnitalNonAssocRing.toMul.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A _inst_5))) (NonUnitalNonAssocRing.toMul.{u1} B (NonAssocRing.toNonUnitalNonAssocRing.{u1} B (Ring.toNonAssocRing.{u1} B _inst_6))) (Distrib.toAdd.{u2} A (NonUnitalNonAssocSemiring.toDistrib.{u2} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A _inst_5))))) (Distrib.toAdd.{u1} B (NonUnitalNonAssocSemiring.toDistrib.{u1} B (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} B (NonAssocRing.toNonUnitalNonAssocRing.{u1} B (Ring.toNonAssocRing.{u1} B _inst_6)))))) -> (NoZeroDivisors.{u2} A (NonUnitalNonAssocRing.toMul.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A _inst_5))) (MonoidWithZero.toZero.{u2} A (Semiring.toMonoidWithZero.{u2} A (Ring.toSemiring.{u2} A _inst_5))))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.no_zero_divisors RingEquiv.noZeroDivisorsₓ'. -/
 /-- If two rings are isomorphic, and the second doesn't have zero divisors,
 then so does the first. -/
 protected theorem noZeroDivisors {A : Type _} (B : Type _) [Ring A] [Ring B] [NoZeroDivisors B]
@@ -1384,12 +860,6 @@ protected theorem noZeroDivisors {A : Type _} (B : Type _) [Ring A] [Ring B] [No
       simpa using eq_zero_or_eq_zero_of_mul_eq_zero this }
 #align ring_equiv.no_zero_divisors RingEquiv.noZeroDivisors
 
-/- warning: ring_equiv.is_domain -> RingEquiv.isDomain is a dubious translation:
-lean 3 declaration is
-  forall {A : Type.{u1}} (B : Type.{u2}) [_inst_5 : Ring.{u1} A] [_inst_6 : Ring.{u2} B] [_inst_7 : IsDomain.{u2} B (Ring.toSemiring.{u2} B _inst_6)], (RingEquiv.{u1, u2} A B (Distrib.toHasMul.{u1} A (Ring.toDistrib.{u1} A _inst_5)) (Distrib.toHasAdd.{u1} A (Ring.toDistrib.{u1} A _inst_5)) (Distrib.toHasMul.{u2} B (Ring.toDistrib.{u2} B _inst_6)) (Distrib.toHasAdd.{u2} B (Ring.toDistrib.{u2} B _inst_6))) -> (IsDomain.{u1} A (Ring.toSemiring.{u1} A _inst_5))
-but is expected to have type
-  forall {A : Type.{u2}} (B : Type.{u1}) [_inst_5 : Ring.{u2} A] [_inst_6 : Ring.{u1} B] [_inst_7 : IsDomain.{u1} B (Ring.toSemiring.{u1} B _inst_6)], (RingEquiv.{u2, u1} A B (NonUnitalNonAssocRing.toMul.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A _inst_5))) (NonUnitalNonAssocRing.toMul.{u1} B (NonAssocRing.toNonUnitalNonAssocRing.{u1} B (Ring.toNonAssocRing.{u1} B _inst_6))) (Distrib.toAdd.{u2} A (NonUnitalNonAssocSemiring.toDistrib.{u2} A (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} A (NonAssocRing.toNonUnitalNonAssocRing.{u2} A (Ring.toNonAssocRing.{u2} A _inst_5))))) (Distrib.toAdd.{u1} B (NonUnitalNonAssocSemiring.toDistrib.{u1} B (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} B (NonAssocRing.toNonUnitalNonAssocRing.{u1} B (Ring.toNonAssocRing.{u1} B _inst_6)))))) -> (IsDomain.{u2} A (Ring.toSemiring.{u2} A _inst_5))
-Case conversion may be inaccurate. Consider using '#align ring_equiv.is_domain RingEquiv.isDomainₓ'. -/
 /-- If two rings are isomorphic, and the second is a domain, then so is the first. -/
 protected theorem isDomain {A : Type _} (B : Type _) [Ring A] [Ring B] [IsDomain B] (e : A ≃+* B) :
     IsDomain A :=
Diff
@@ -140,10 +140,7 @@ variable [Mul R] [Add R] [Mul S] [Add S] [Mul S'] [Add S']
 instance : RingEquivClass (R ≃+* S) R S where
   coe := toFun
   inv := invFun
-  coe_injective' e f h₁ h₂ := by
-    cases e
-    cases f
-    congr
+  coe_injective' e f h₁ h₂ := by cases e; cases f; congr
   map_add := map_add'
   map_mul := map_mul'
   left_inv := RingEquiv.left_inv
@@ -578,12 +575,8 @@ protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] : α ≃+* β ≃ (
     where
   toFun f := { f.toAddEquiv.mulOp, f.toMulEquiv.op with }
   invFun f := { AddEquiv.mulOp.symm f.toAddEquiv, MulEquiv.op.symm f.toMulEquiv with }
-  left_inv f := by
-    ext
-    rfl
-  right_inv f := by
-    ext
-    rfl
+  left_inv f := by ext; rfl
+  right_inv f := by ext; rfl
 #align ring_equiv.op RingEquiv.op
 
 /- warning: ring_equiv.unop -> RingEquiv.unop is a dubious translation:
@@ -1042,10 +1035,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_comp_symm_to_non_unital_ring_hom RingEquiv.toNonUnitalRingHomm_comp_symm_toNonUnitalRingHomₓ'. -/
 @[simp]
 theorem toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom (e : R ≃+* S) :
-    e.toNonUnitalRingHom.comp e.symm.toNonUnitalRingHom = NonUnitalRingHom.id _ :=
-  by
-  ext
-  simp
+    e.toNonUnitalRingHom.comp e.symm.toNonUnitalRingHom = NonUnitalRingHom.id _ := by ext; simp
 #align ring_equiv.to_non_unital_ring_hom_comp_symm_to_non_unital_ring_hom RingEquiv.toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom
 
 /- warning: ring_equiv.symm_to_non_unital_ring_hom_comp_to_non_unital_ring_hom -> RingEquiv.symm_toNonUnitalRingHom_comp_toNonUnitalRingHom is a dubious translation:
@@ -1056,10 +1046,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_non_unital_ring_hom_comp_to_non_unital_ring_hom RingEquiv.symm_toNonUnitalRingHom_comp_toNonUnitalRingHomₓ'. -/
 @[simp]
 theorem symm_toNonUnitalRingHom_comp_toNonUnitalRingHom (e : R ≃+* S) :
-    e.symm.toNonUnitalRingHom.comp e.toNonUnitalRingHom = NonUnitalRingHom.id _ :=
-  by
-  ext
-  simp
+    e.symm.toNonUnitalRingHom.comp e.toNonUnitalRingHom = NonUnitalRingHom.id _ := by ext; simp
 #align ring_equiv.symm_to_non_unital_ring_hom_comp_to_non_unital_ring_hom RingEquiv.symm_toNonUnitalRingHom_comp_toNonUnitalRingHom
 
 end NonUnitalSemiringHom
@@ -1246,10 +1233,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom_comp_symm_to_ring_hom RingEquiv.toRingHom_comp_symm_toRingHomₓ'. -/
 @[simp]
 theorem toRingHom_comp_symm_toRingHom (e : R ≃+* S) :
-    e.toRingHom.comp e.symm.toRingHom = RingHom.id _ :=
-  by
-  ext
-  simp
+    e.toRingHom.comp e.symm.toRingHom = RingHom.id _ := by ext; simp
 #align ring_equiv.to_ring_hom_comp_symm_to_ring_hom RingEquiv.toRingHom_comp_symm_toRingHom
 
 /- warning: ring_equiv.symm_to_ring_hom_comp_to_ring_hom -> RingEquiv.symm_toRingHom_comp_toRingHom is a dubious translation:
@@ -1260,10 +1244,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_ring_hom_comp_to_ring_hom RingEquiv.symm_toRingHom_comp_toRingHomₓ'. -/
 @[simp]
 theorem symm_toRingHom_comp_toRingHom (e : R ≃+* S) :
-    e.symm.toRingHom.comp e.toRingHom = RingHom.id _ :=
-  by
-  ext
-  simp
+    e.symm.toRingHom.comp e.toRingHom = RingHom.id _ := by ext; simp
 #align ring_equiv.symm_to_ring_hom_comp_to_ring_hom RingEquiv.symm_toRingHom_comp_toRingHom
 
 /- warning: ring_equiv.of_hom_inv' -> RingEquiv.ofHomInv' is a dubious translation:
Diff
@@ -187,10 +187,7 @@ theorem coe_toEquiv (f : R ≃+* S) : ⇑(f : R ≃ S) = f :=
 #align ring_equiv.coe_to_equiv RingEquiv.coe_toEquiv
 
 /- warning: ring_equiv.map_mul -> RingEquiv.map_mul is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (x : R) (y : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e y))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (x : R) (y : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) y) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (instHMul.{u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e y))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_mul RingEquiv.map_mulₓ'. -/
 /-- A ring isomorphism preserves multiplication. -/
 protected theorem map_mul (e : R ≃+* S) (x y : R) : e (x * y) = e x * e y :=
@@ -198,10 +195,7 @@ protected theorem map_mul (e : R ≃+* S) (x y : R) : e (x * y) = e x * e y :=
 #align ring_equiv.map_mul RingEquiv.map_mul
 
 /- warning: ring_equiv.map_add -> RingEquiv.map_add is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (x : R) (y : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e y))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (x : R) (y : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) y) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (instHAdd.{u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_4) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e y))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_add RingEquiv.map_addₓ'. -/
 /-- A ring isomorphism preserves addition. -/
 protected theorem map_add (e : R ≃+* S) (x y : R) : e (x + y) = e x + e y :=
@@ -209,10 +203,7 @@ protected theorem map_add (e : R ≃+* S) (x y : R) : e (x + y) = e x + e y :=
 #align ring_equiv.map_add RingEquiv.map_add
 
 /- warning: ring_equiv.ext -> RingEquiv.ext is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] {f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4} {g : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4}, (forall (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) g x)) -> (Eq.{max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f g)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] {f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4} {g : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4}, (forall (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) g x)) -> (Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) f g)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.ext RingEquiv.extₓ'. -/
 /-- Two ring isomorphisms agree if they are defined by the
     same underlying function. -/
@@ -227,10 +218,7 @@ theorem coe_mk (e e' h₁ h₂ h₃ h₄) : ⇑(⟨e, e', h₁, h₂, h₃, h₄
 #align ring_equiv.coe_mk RingEquiv.coe_mkₓ
 
 /- warning: ring_equiv.mk_coe -> RingEquiv.mk_coe is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e' : S -> R) (h₁ : Function.LeftInverse.{succ u1, succ u2} R S e' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e)) (h₂ : Function.RightInverse.{succ u1, succ u2} R S e' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e)) (h₃ : forall (x : R) (y : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e y))) (h₄ : forall (x : R) (y : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e y))), Eq.{max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e) e' h₁ h₂ h₃ h₄) e
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (e' : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S e' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e)) (h₂ : Function.RightInverse.{succ u2, succ u1} R S e' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e)) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) e' h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) e' h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) e' h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) e' h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) e' h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) e' h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) e' h₁ h₂) h₃ h₄) e
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.mk_coe RingEquiv.mk_coeₓ'. -/
 @[simp]
 theorem mk_coe (e : R ≃+* S) (e' h₁ h₂ h₃ h₄) : (⟨e, e', h₁, h₂, h₃, h₄⟩ : R ≃+* S) = e :=
@@ -238,30 +226,21 @@ theorem mk_coe (e : R ≃+* S) (e' h₁ h₂ h₃ h₄) : (⟨e, e', h₁, h₂,
 #align ring_equiv.mk_coe RingEquiv.mk_coe
 
 /- warning: ring_equiv.congr_arg -> RingEquiv.congr_arg is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] {f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4} {x : R} {x' : R}, (Eq.{succ u1} R x x') -> (Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f x'))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] {f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4} {x : R} {x' : R}, (Eq.{succ u2} R x x') -> (Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f x'))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.congr_arg RingEquiv.congr_argₓ'. -/
 protected theorem congr_arg {f : R ≃+* S} {x x' : R} : x = x' → f x = f x' :=
   FunLike.congr_arg f
 #align ring_equiv.congr_arg RingEquiv.congr_arg
 
 /- warning: ring_equiv.congr_fun -> RingEquiv.congr_fun is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] {f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4} {g : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4}, (Eq.{max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f g) -> (forall (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) g x))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] {f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4} {g : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4}, (Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) f g) -> (forall (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) g x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.congr_fun RingEquiv.congr_funₓ'. -/
 protected theorem congr_fun {f g : R ≃+* S} (h : f = g) (x : R) : f x = g x :=
   FunLike.congr_fun h x
 #align ring_equiv.congr_fun RingEquiv.congr_fun
 
 /- warning: ring_equiv.ext_iff -> RingEquiv.ext_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] {f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4} {g : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4}, Iff (Eq.{max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f g) (forall (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) g x))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] {f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4} {g : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4}, Iff (Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) f g) (forall (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) g x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.ext_iff RingEquiv.ext_iffₓ'. -/
 protected theorem ext_iff {f g : R ≃+* S} : f = g ↔ ∀ x, f x = g x :=
   FunLike.ext_iff
@@ -444,10 +423,7 @@ theorem symm_bijective : Function.Bijective (RingEquiv.symm : R ≃+* S → S 
 #align ring_equiv.symm_bijective RingEquiv.symm_bijective
 
 /- warning: ring_equiv.mk_coe' -> RingEquiv.mk_coe' is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (f : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} S R (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e) f) (h₂ : Function.RightInverse.{succ u2, succ u1} S R (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e) f) (h₃ : forall (x : S) (y : S), Eq.{succ u1} R (f (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) x y)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) (f x) (f y))) (h₄ : forall (x : S) (y : S), Eq.{succ u1} R (f (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) x y)) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) (f x) (f y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.mk.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e) h₁ h₂ h₃ h₄) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (f : S -> R) (h₁ : Function.LeftInverse.{succ u1, succ u2} S R (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (e : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) e) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) f) (h₂ : Function.RightInverse.{succ u1, succ u2} S R (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (e : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) e) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) f) (h₃ : forall (x : S) (y : S), Eq.{succ u2} R (Equiv.toFun.{succ u1, succ u2} S R (Equiv.mk.{succ u1, succ u2} S R f (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) h₁ h₂) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) x y)) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) (Equiv.toFun.{succ u1, succ u2} S R (Equiv.mk.{succ u1, succ u2} S R f (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) h₁ h₂) x) (Equiv.toFun.{succ u1, succ u2} S R (Equiv.mk.{succ u1, succ u2} S R f (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) h₁ h₂) y))) (h₄ : forall (x : S) (y : S), Eq.{succ u2} R (Equiv.toFun.{succ u1, succ u2} S R (Equiv.mk.{succ u1, succ u2} S R f (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) h₁ h₂) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) x y)) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) (Equiv.toFun.{succ u1, succ u2} S R (Equiv.mk.{succ u1, succ u2} S R f (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) h₁ h₂) x) (Equiv.toFun.{succ u1, succ u2} S R (Equiv.mk.{succ u1, succ u2} S R f (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R f (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) h₁ h₂) h₃ h₄) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 e)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.mk_coe' RingEquiv.mk_coe'ₓ'. -/
 @[simp]
 theorem mk_coe' (e : R ≃+* S) (f h₁ h₂ h₃ h₄) :
@@ -456,10 +432,7 @@ theorem mk_coe' (e : R ≃+* S) (f h₁ h₂ h₃ h₄) :
 #align ring_equiv.mk_coe' RingEquiv.mk_coe'
 
 /- warning: ring_equiv.symm_mk -> RingEquiv.symm_mk is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u1, succ u2} R S g f) (h₂ : Function.RightInverse.{succ u1, succ u2} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u2} S (f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) (f x) (f y))) (h₄ : forall (x : R) (y : R), Eq.{succ u2} S (f (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) (f x) (f y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄)) (RingEquiv.mk.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 g f (RingEquiv.left_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.right_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_mul'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_add'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_mk RingEquiv.symm_mkₓ'. -/
 @[simp]
 theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
@@ -483,20 +456,14 @@ protected def trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') : R ≃+* S' :=
 #align ring_equiv.trans RingEquiv.trans
 
 /- warning: ring_equiv.trans_apply -> RingEquiv.trans_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u3} S'] [_inst_6 : Add.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (a : R), Eq.{succ u3} S' (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) => R -> S') (RingEquiv.hasCoeToFun.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (RingEquiv.trans.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂) a) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (fun (_x : RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) => S -> S') (RingEquiv.hasCoeToFun.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) e₂ (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e₁ a))
-but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {S' : Type.{u1}} [_inst_1 : Mul.{u3} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u3} R] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u1} S'] [_inst_6 : Add.{u1} S'] (e₁ : RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) (a : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S') a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S') _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u1), succ u3, succ u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' (EquivLike.toEmbeddingLike.{max (succ u3) (succ u1), succ u3, succ u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' (MulEquivClass.toEquivLike.{max u3 u1, u3, u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' _inst_1 _inst_5 (RingEquivClass.toMulEquivClass.{max u3 u1, u3, u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' _inst_1 _inst_3 _inst_5 _inst_6 (RingEquiv.instRingEquivClassRingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6))))) (RingEquiv.trans.{u3, u2, u1} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S (fun (_x : S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S) => S') _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' _inst_2 _inst_5 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' _inst_2 _inst_4 _inst_5 _inst_6 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6))))) e₂ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u3 u2, u3, u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e₁ a))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.trans_apply RingEquiv.trans_applyₓ'. -/
 theorem trans_apply (e₁ : R ≃+* S) (e₂ : S ≃+* S') (a : R) : e₁.trans e₂ a = e₂ (e₁ a) :=
   rfl
 #align ring_equiv.trans_apply RingEquiv.trans_apply
 
 /- warning: ring_equiv.coe_trans -> RingEquiv.coe_trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u3} S'] [_inst_6 : Add.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} ((fun (_x : RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) => R -> S') (RingEquiv.trans.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (fun (_x : RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) => R -> S') (RingEquiv.hasCoeToFun.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (RingEquiv.trans.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) (Function.comp.{succ u1, succ u2, succ u3} R S S' (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (fun (_x : RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) => S -> S') (RingEquiv.hasCoeToFun.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) e₂) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e₁))
-but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {S' : Type.{u1}} [_inst_1 : Mul.{u3} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u3} R] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u1} S'] [_inst_6 : Add.{u1} S'] (e₁ : RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6), Eq.{max (succ u3) (succ u1)} (forall (a : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S') a) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S') _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u1), succ u3, succ u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' (EquivLike.toEmbeddingLike.{max (succ u3) (succ u1), succ u3, succ u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' (MulEquivClass.toEquivLike.{max u3 u1, u3, u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' _inst_1 _inst_5 (RingEquivClass.toMulEquivClass.{max u3 u1, u3, u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' _inst_1 _inst_3 _inst_5 _inst_6 (RingEquiv.instRingEquivClassRingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6))))) (RingEquiv.trans.{u3, u2, u1} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) (Function.comp.{succ u3, succ u2, succ u1} R S S' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S (fun (_x : S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S) => S') _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' _inst_2 _inst_5 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' _inst_2 _inst_4 _inst_5 _inst_6 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6))))) e₂) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u3, succ u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u3, succ u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u3 u2, u3, u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u3 u2, u3, u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e₁))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_trans RingEquiv.coe_transₓ'. -/
 @[simp]
 theorem coe_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') : (e₁.trans e₂ : R → S') = e₂ ∘ e₁ :=
@@ -504,10 +471,7 @@ theorem coe_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') : (e₁.trans e₂ : R
 #align ring_equiv.coe_trans RingEquiv.coe_trans
 
 /- warning: ring_equiv.symm_trans_apply -> RingEquiv.symm_trans_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u3} S'] [_inst_6 : Add.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (a : S'), Eq.{succ u1} R (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (RingEquiv.{u3, u1} S' R _inst_5 _inst_6 _inst_1 _inst_2) (fun (_x : RingEquiv.{u3, u1} S' R _inst_5 _inst_6 _inst_1 _inst_2) => S' -> R) (RingEquiv.hasCoeToFun.{u3, u1} S' R _inst_5 _inst_6 _inst_1 _inst_2) (RingEquiv.symm.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6 (RingEquiv.trans.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) a) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (fun (_x : RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) => S -> R) (RingEquiv.hasCoeToFun.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e₁) (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ u2)} (RingEquiv.{u3, u2} S' S _inst_5 _inst_6 _inst_3 _inst_4) (fun (_x : RingEquiv.{u3, u2} S' S _inst_5 _inst_6 _inst_3 _inst_4) => S' -> S) (RingEquiv.hasCoeToFun.{u3, u2} S' S _inst_5 _inst_6 _inst_3 _inst_4) (RingEquiv.symm.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6 e₂) a))
-but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {S' : Type.{u1}} [_inst_1 : Mul.{u3} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u3} R] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u1} S'] [_inst_6 : Add.{u1} S'] (e₁ : RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) (a : S'), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S') => R) a) (FunLike.coe.{max (succ u3) (succ u1), succ u1, succ u3} (RingEquiv.{u1, u3} S' R _inst_5 _inst_1 _inst_6 _inst_3) S' (fun (_x : S') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S') => R) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u1), succ u1, succ u3} (RingEquiv.{u1, u3} S' R _inst_5 _inst_1 _inst_6 _inst_3) S' R (EquivLike.toEmbeddingLike.{max (succ u3) (succ u1), succ u1, succ u3} (RingEquiv.{u1, u3} S' R _inst_5 _inst_1 _inst_6 _inst_3) S' R (MulEquivClass.toEquivLike.{max u3 u1, u1, u3} (RingEquiv.{u1, u3} S' R _inst_5 _inst_1 _inst_6 _inst_3) S' R _inst_5 _inst_1 (RingEquivClass.toMulEquivClass.{max u3 u1, u1, u3} (RingEquiv.{u1, u3} S' R _inst_5 _inst_1 _inst_6 _inst_3) S' R _inst_5 _inst_6 _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u3} S' R _inst_5 _inst_1 _inst_6 _inst_3))))) (RingEquiv.symm.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6 (RingEquiv.trans.{u3, u2, u1} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) a) (FunLike.coe.{max (succ u3) (succ u2), succ u2, succ u3} (RingEquiv.{u2, u3} S R _inst_2 _inst_1 _inst_4 _inst_3) S (fun (_x : S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S) => R) _x) (EmbeddingLike.toFunLike.{max (succ u3) (succ u2), succ u2, succ u3} (RingEquiv.{u2, u3} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (EquivLike.toEmbeddingLike.{max (succ u3) (succ u2), succ u2, succ u3} (RingEquiv.{u2, u3} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (MulEquivClass.toEquivLike.{max u3 u2, u2, u3} (RingEquiv.{u2, u3} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_1 (RingEquivClass.toMulEquivClass.{max u3 u2, u2, u3} (RingEquiv.{u2, u3} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_4 _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u2, u3} S R _inst_2 _inst_1 _inst_4 _inst_3))))) (RingEquiv.symm.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e₁) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S' S _inst_5 _inst_2 _inst_6 _inst_4) S' (fun (_x : S') => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S') => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S' S _inst_5 _inst_2 _inst_6 _inst_4) S' S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S' S _inst_5 _inst_2 _inst_6 _inst_4) S' S (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S' S _inst_5 _inst_2 _inst_6 _inst_4) S' S _inst_5 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S' S _inst_5 _inst_2 _inst_6 _inst_4) S' S _inst_5 _inst_6 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} S' S _inst_5 _inst_2 _inst_6 _inst_4))))) (RingEquiv.symm.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6 e₂) a))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_trans_apply RingEquiv.symm_trans_applyₓ'. -/
 @[simp]
 theorem symm_trans_apply (e₁ : R ≃+* S) (e₂ : S ≃+* S') (a : S') :
@@ -556,10 +520,7 @@ protected theorem surjective (e : R ≃+* S) : Function.Surjective e :=
 #align ring_equiv.surjective RingEquiv.surjective
 
 /- warning: ring_equiv.apply_symm_apply -> RingEquiv.apply_symm_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (x : S), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (fun (_x : RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) => S -> R) (RingEquiv.hasCoeToFun.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e) x)) x
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (x : S), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S (fun (a : S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S) => R) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_1 (RingEquivClass.toMulEquivClass.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_4 _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3))))) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S (fun (_x : S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S) => R) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_1 (RingEquivClass.toMulEquivClass.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_4 _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3))))) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 e) x)) x
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.apply_symm_apply RingEquiv.apply_symm_applyₓ'. -/
 @[simp]
 theorem apply_symm_apply (e : R ≃+* S) : ∀ x, e (e.symm x) = x :=
@@ -567,10 +528,7 @@ theorem apply_symm_apply (e : R ≃+* S) : ∀ x, e (e.symm x) = x :=
 #align ring_equiv.apply_symm_apply RingEquiv.apply_symm_apply
 
 /- warning: ring_equiv.symm_apply_apply -> RingEquiv.symm_apply_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (x : R), Eq.{succ u1} R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (fun (_x : RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) => S -> R) (RingEquiv.hasCoeToFun.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e x)) x
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (a : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S (fun (_x : S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S) => R) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_1 (RingEquivClass.toMulEquivClass.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_4 _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3))))) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 e) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e x)) x
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_apply_apply RingEquiv.symm_apply_applyₓ'. -/
 @[simp]
 theorem symm_apply_apply (e : R ≃+* S) : ∀ x, e.symm (e x) = x :=
@@ -578,20 +536,14 @@ theorem symm_apply_apply (e : R ≃+* S) : ∀ x, e.symm (e x) = x :=
 #align ring_equiv.symm_apply_apply RingEquiv.symm_apply_apply
 
 /- warning: ring_equiv.image_eq_preimage -> RingEquiv.image_eq_preimage is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (s : Set.{u1} R), Eq.{succ u2} (Set.{u2} S) (Set.image.{u1, u2} R S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) e) s) (Set.preimage.{u2, u1} S R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (fun (_x : RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) => S -> R) (RingEquiv.hasCoeToFun.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e)) s)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (e : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (s : Set.{u2} R), Eq.{succ u1} (Set.{u1} S) (Set.image.{u2, u1} R S (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e) s) (Set.preimage.{u1, u2} S R (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S (fun (_x : S) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : S) => R) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u1, succ u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R (MulEquivClass.toEquivLike.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_1 (RingEquivClass.toMulEquivClass.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) S R _inst_2 _inst_4 _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3))))) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 e)) s)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.image_eq_preimage RingEquiv.image_eq_preimageₓ'. -/
 theorem image_eq_preimage (e : R ≃+* S) (s : Set R) : e '' s = e.symm ⁻¹' s :=
   e.toEquiv.image_eq_preimage s
 #align ring_equiv.image_eq_preimage RingEquiv.image_eq_preimage
 
 /- warning: ring_equiv.coe_mul_equiv_trans -> RingEquiv.coe_mulEquiv_trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u3} S'] [_inst_6 : Add.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} (MulEquiv.{u1, u3} R S' _inst_1 _inst_5) ((fun (a : Sort.{max (succ u1) (succ u3)}) (b : Sort.{max (succ u1) (succ u3)}) [self : HasLiftT.{max (succ u1) (succ u3), max (succ u1) (succ u3)} a b] => self.0) (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (MulEquiv.{u1, u3} R S' _inst_1 _inst_5) (HasLiftT.mk.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (MulEquiv.{u1, u3} R S' _inst_1 _inst_5) (CoeTCₓ.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (MulEquiv.{u1, u3} R S' _inst_1 _inst_5) (MulEquiv.hasCoeT.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) R S' _inst_1 _inst_5 (RingEquivClass.toMulEquivClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) R S' _inst_1 _inst_2 _inst_5 _inst_6 (RingEquiv.ringEquivClass.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6))))) (RingEquiv.trans.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) (MulEquiv.trans.{u1, u2, u3} R S S' _inst_1 _inst_3 _inst_5 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquiv.{u1, u2} R S _inst_1 _inst_3) (MulEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e₁) ((fun (a : Sort.{max (succ u2) (succ u3)}) (b : Sort.{max (succ u2) (succ u3)}) [self : HasLiftT.{max (succ u2) (succ u3), max (succ u2) (succ u3)} a b] => self.0) (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (MulEquiv.{u2, u3} S S' _inst_3 _inst_5) (HasLiftT.mk.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (MulEquiv.{u2, u3} S S' _inst_3 _inst_5) (CoeTCₓ.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (MulEquiv.{u2, u3} S S' _inst_3 _inst_5) (MulEquiv.hasCoeT.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) S S' _inst_3 _inst_5 (RingEquivClass.toMulEquivClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) S S' _inst_3 _inst_4 _inst_5 _inst_6 (RingEquiv.ringEquivClass.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6))))) e₂))
-but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {S' : Type.{u1}} [_inst_1 : Mul.{u3} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u3} R] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u1} S'] [_inst_6 : Add.{u1} S'] (e₁ : RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6), Eq.{max (succ u3) (succ u1)} (MulEquiv.{u3, u1} R S' _inst_1 _inst_5) (MulEquivClass.toMulEquiv.{max u3 u1, u3, u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' _inst_1 _inst_5 (RingEquivClass.toMulEquivClass.{max u3 u1, u3, u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' _inst_1 _inst_3 _inst_5 _inst_6 (RingEquiv.instRingEquivClassRingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6)) (RingEquiv.trans.{u3, u2, u1} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) (MulEquiv.trans.{u3, u2, u1} R S S' _inst_1 _inst_2 _inst_5 (MulEquivClass.toMulEquiv.{max u3 u2, u3, u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u3 u2, u3, u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4)) e₁) (MulEquivClass.toMulEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' _inst_2 _inst_5 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' _inst_2 _inst_4 _inst_5 _inst_6 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6)) e₂))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_mul_equiv_trans RingEquiv.coe_mulEquiv_transₓ'. -/
 @[simp]
 theorem coe_mulEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
@@ -600,10 +552,7 @@ theorem coe_mulEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
 #align ring_equiv.coe_mul_equiv_trans RingEquiv.coe_mulEquiv_trans
 
 /- warning: ring_equiv.coe_add_equiv_trans -> RingEquiv.coe_addEquiv_trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u3} S'] [_inst_6 : Add.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6), Eq.{max (succ u1) (succ u3)} (AddEquiv.{u1, u3} R S' _inst_2 _inst_6) ((fun (a : Sort.{max (succ u1) (succ u3)}) (b : Sort.{max (succ u1) (succ u3)}) [self : HasLiftT.{max (succ u1) (succ u3), max (succ u1) (succ u3)} a b] => self.0) (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (AddEquiv.{u1, u3} R S' _inst_2 _inst_6) (HasLiftT.mk.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (AddEquiv.{u1, u3} R S' _inst_2 _inst_6) (CoeTCₓ.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) (AddEquiv.{u1, u3} R S' _inst_2 _inst_6) (AddEquiv.hasCoeT.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) R S' _inst_2 _inst_6 (RingEquivClass.toAddEquivClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6) R S' _inst_1 _inst_2 _inst_5 _inst_6 (RingEquiv.ringEquivClass.{u1, u3} R S' _inst_1 _inst_2 _inst_5 _inst_6))))) (RingEquiv.trans.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) (AddEquiv.trans.{u1, u2, u3} R S S' _inst_2 _inst_4 _inst_6 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (AddEquiv.{u1, u2} R S _inst_2 _inst_4) (AddEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_2 _inst_4 (RingEquivClass.toAddEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4))))) e₁) ((fun (a : Sort.{max (succ u2) (succ u3)}) (b : Sort.{max (succ u2) (succ u3)}) [self : HasLiftT.{max (succ u2) (succ u3), max (succ u2) (succ u3)} a b] => self.0) (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (AddEquiv.{u2, u3} S S' _inst_4 _inst_6) (HasLiftT.mk.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (AddEquiv.{u2, u3} S S' _inst_4 _inst_6) (CoeTCₓ.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) (AddEquiv.{u2, u3} S S' _inst_4 _inst_6) (AddEquiv.hasCoeT.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) S S' _inst_4 _inst_6 (RingEquivClass.toAddEquivClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6) S S' _inst_3 _inst_4 _inst_5 _inst_6 (RingEquiv.ringEquivClass.{u2, u3} S S' _inst_3 _inst_4 _inst_5 _inst_6))))) e₂))
-but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {S' : Type.{u1}} [_inst_1 : Mul.{u3} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u3} R] [_inst_4 : Add.{u2} S] [_inst_5 : Mul.{u1} S'] [_inst_6 : Add.{u1} S'] (e₁ : RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (e₂ : RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6), Eq.{max (succ u3) (succ u1)} (AddEquiv.{u3, u1} R S' _inst_3 _inst_6) (AddEquivClass.toAddEquiv.{max u3 u1, u3, u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' _inst_3 _inst_6 (RingEquivClass.toAddEquivClass.{max u3 u1, u3, u1} (RingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6) R S' _inst_1 _inst_3 _inst_5 _inst_6 (RingEquiv.instRingEquivClassRingEquiv.{u3, u1} R S' _inst_1 _inst_5 _inst_3 _inst_6)) (RingEquiv.trans.{u3, u2, u1} R S S' _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 e₁ e₂)) (AddEquiv.trans.{u3, u2, u1} R S S' _inst_3 _inst_4 _inst_6 (AddEquivClass.toAddEquiv.{max u3 u2, u3, u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_3 _inst_4 (RingEquivClass.toAddEquivClass.{max u3 u2, u3, u2} (RingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u3, u2} R S _inst_1 _inst_2 _inst_3 _inst_4)) e₁) (AddEquivClass.toAddEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' _inst_4 _inst_6 (RingEquivClass.toAddEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6) S S' _inst_2 _inst_4 _inst_5 _inst_6 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} S S' _inst_2 _inst_5 _inst_4 _inst_6)) e₂))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_add_equiv_trans RingEquiv.coe_addEquiv_transₓ'. -/
 @[simp]
 theorem coe_addEquiv_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
@@ -748,10 +697,7 @@ theorem coe_ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bij
 #align ring_equiv.coe_of_bijective RingEquiv.coe_ofBijective
 
 /- warning: ring_equiv.of_bijective_apply -> RingEquiv.ofBijective_apply is a dubious translation:
-lean 3 declaration is
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)) (x : R), Eq.{succ u3} S (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf) x) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f x)
-but is expected to have type
-  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)) (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf) x) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f x)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.of_bijective_apply RingEquiv.ofBijective_applyₓ'. -/
 theorem ofBijective_apply [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f)
     (x : R) : ofBijective f hf x = f x :=
@@ -839,20 +785,14 @@ protected theorem map_one : f 1 = 1 :=
 variable {x}
 
 /- warning: ring_equiv.map_eq_one_iff -> RingEquiv.map_eq_one_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) {x : R}, Iff (Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f x) (OfNat.ofNat.{u2} S 1 (OfNat.mk.{u2} S 1 (One.one.{u2} S (AddMonoidWithOne.toOne.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2))))))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) {x : R}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f x) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonAssocSemiring.toOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2)))) (Eq.{succ u1} R x (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocSemiring.toOne.{u1} R _inst_1))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_eq_one_iff RingEquiv.map_eq_one_iffₓ'. -/
 protected theorem map_eq_one_iff : f x = 1 ↔ x = 1 :=
   MulEquivClass.map_eq_one_iff f
 #align ring_equiv.map_eq_one_iff RingEquiv.map_eq_one_iff
 
 /- warning: ring_equiv.map_ne_one_iff -> RingEquiv.map_ne_one_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) {x : R}, Iff (Ne.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f x) (OfNat.ofNat.{u2} S 1 (OfNat.mk.{u2} S 1 (One.one.{u2} S (AddMonoidWithOne.toOne.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2))))))) (Ne.{succ u1} R x (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) {x : R}, Iff (Ne.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f x) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonAssocSemiring.toOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2)))) (Ne.{succ u1} R x (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocSemiring.toOne.{u1} R _inst_1))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_ne_one_iff RingEquiv.map_ne_one_iffₓ'. -/
 theorem map_ne_one_iff : f x ≠ 1 ↔ x ≠ 1 :=
   MulEquivClass.map_ne_one_iff f
@@ -869,10 +809,7 @@ theorem coe_monoidHom_refl : (RingEquiv.refl R : R →* R) = MonoidHom.id R :=
 #align ring_equiv.coe_monoid_hom_refl RingEquiv.coe_monoidHom_refl
 
 /- warning: ring_equiv.coe_add_monoid_hom_refl -> RingEquiv.coe_addMonoidHom_refl is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} [_inst_1 : NonAssocSemiring.{u1} R], Eq.{succ u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1))))) (HasLiftT.mk.{succ u1, succ u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1))))) (CoeTCₓ.coe.{succ u1, succ u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1))))) (AddMonoidHom.hasCoeT.{u1, u1, u1} R R (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (RingHomClass.toAddMonoidHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquivClass.toRingHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquiv.ringEquivClass.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))))) (RingEquiv.refl.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) (AddMonoidHom.id.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))))
-but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonAssocSemiring.{u1} R], Eq.{succ u1} (AddMonoidHom.{u1, u1} R R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1))))) (AddMonoidHomClass.toAddMonoidHom.{u1, u1, u1} R R (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (RingHomClass.toAddMonoidHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquivClass.toRingHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquiv.instRingEquivClassRingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (RingEquiv.refl.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) (AddMonoidHom.id.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_add_monoid_hom_refl RingEquiv.coe_addMonoidHom_reflₓ'. -/
 @[simp]
 theorem coe_addMonoidHom_refl : (RingEquiv.refl R : R →+ R) = AddMonoidHom.id R :=
@@ -895,10 +832,7 @@ theorem coe_ringHom_refl : (RingEquiv.refl R : R →* R) = RingHom.id R :=
 #align ring_equiv.coe_ring_hom_refl RingEquiv.coe_ringHom_refl
 
 /- warning: ring_equiv.coe_monoid_hom_trans -> RingEquiv.coe_monoidHom_trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] [_inst_3 : NonAssocSemiring.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (e₂ : RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))), Eq.{max (succ u3) (succ u1)} (MonoidHom.{u1, u3} R S' (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3))) ((fun (a : Sort.{max (succ u1) (succ u3)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u3), max (succ u3) (succ u1)} a b] => self.0) (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MonoidHom.{u1, u3} R S' (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3))) (HasLiftT.mk.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MonoidHom.{u1, u3} R S' (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3))) (CoeTCₓ.coe.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MonoidHom.{u1, u3} R S' (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3))) (MonoidHom.hasCoeT.{u1, u3, max u1 u3} R S' (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3)) (RingHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquivClass.toRingHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquiv.ringEquivClass.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))))))))) (RingEquiv.trans.{u1, u2, u3} R S S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) e₁ e₂)) (MonoidHom.comp.{u1, u2, u3} R S S' (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3)) ((fun (a : Sort.{max (succ u2) (succ u3)}) (b : Sort.{max (succ u3) (succ u2)}) [self : HasLiftT.{max (succ u2) (succ u3), max (succ u3) (succ u2)} a b] => self.0) (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MonoidHom.{u2, u3} S S' (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3))) (HasLiftT.mk.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MonoidHom.{u2, u3} S S' (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3))) (CoeTCₓ.coe.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MonoidHom.{u2, u3} S S' (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3))) (MonoidHom.hasCoeT.{u2, u3, max u2 u3} S S' (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3)) (RingHomClass.toMonoidHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquivClass.toRingHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquiv.ringEquivClass.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))))))))) e₂) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2))) (MonoidHom.hasCoeT.{u1, u2, max u1 u2} R S (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2)) (RingHomClass.toMonoidHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))))))))) e₁))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} {S' : Type.{u3}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] [_inst_3 : NonAssocSemiring.{u3} S'] (e₁ : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (e₂ : RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))), Eq.{max (succ u2) (succ u3)} (MonoidHom.{u2, u3} R S' (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3))) (MonoidHomClass.toMonoidHom.{u2, u3, max u2 u3} R S' (RingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3)) (RingHomClass.toMonoidHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquivClass.toRingHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))))) (RingEquiv.trans.{u2, u1, u3} R S S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) e₁ e₂)) (MonoidHom.comp.{u2, u1, u3} R S S' (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S _inst_2)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3)) (MonoidHomClass.toMonoidHom.{u1, u3, max u1 u3} S S' (RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S _inst_2)) (MulZeroOneClass.toMulOneClass.{u3} S' (NonAssocSemiring.toMulZeroOneClass.{u3} S' _inst_3)) (RingHomClass.toMonoidHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquivClass.toRingHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))))) e₂) (MonoidHomClass.toMonoidHom.{u2, u1, max u2 u1} R S (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S _inst_2)) (RingHomClass.toMonoidHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))))) e₁))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_monoid_hom_trans RingEquiv.coe_monoidHom_transₓ'. -/
 @[simp]
 theorem coe_monoidHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
@@ -907,10 +841,7 @@ theorem coe_monoidHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S 
 #align ring_equiv.coe_monoid_hom_trans RingEquiv.coe_monoidHom_trans
 
 /- warning: ring_equiv.coe_add_monoid_hom_trans -> RingEquiv.coe_addMonoidHom_trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] [_inst_3 : NonAssocSemiring.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (e₂ : RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))), Eq.{max (succ u3) (succ u1)} (AddMonoidHom.{u1, u3} R S' (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3))))) ((fun (a : Sort.{max (succ u1) (succ u3)}) (b : Sort.{max (succ u3) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u3), max (succ u3) (succ u1)} a b] => self.0) (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoidHom.{u1, u3} R S' (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3))))) (HasLiftT.mk.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoidHom.{u1, u3} R S' (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3))))) (CoeTCₓ.coe.{max (succ u1) (succ u3), max (succ u3) (succ u1)} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoidHom.{u1, u3} R S' (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3))))) (AddMonoidHom.hasCoeT.{u1, u3, max u1 u3} R S' (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3)))) (RingHomClass.toAddMonoidHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquivClass.toRingHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquiv.ringEquivClass.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))))))))) (RingEquiv.trans.{u1, u2, u3} R S S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) e₁ e₂)) (AddMonoidHom.comp.{u1, u2, u3} R S S' (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3)))) ((fun (a : Sort.{max (succ u2) (succ u3)}) (b : Sort.{max (succ u3) (succ u2)}) [self : HasLiftT.{max (succ u2) (succ u3), max (succ u3) (succ u2)} a b] => self.0) (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoidHom.{u2, u3} S S' (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3))))) (HasLiftT.mk.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoidHom.{u2, u3} S S' (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3))))) (CoeTCₓ.coe.{max (succ u2) (succ u3), max (succ u3) (succ u2)} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoidHom.{u2, u3} S S' (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3))))) (AddMonoidHom.hasCoeT.{u2, u3, max u2 u3} S S' (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3)))) (RingHomClass.toAddMonoidHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquivClass.toRingHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquiv.ringEquivClass.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))))))))) e₂) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2))))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2))))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2))))) (AddMonoidHom.hasCoeT.{u1, u2, max u1 u2} R S (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2)))) (RingHomClass.toAddMonoidHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))))))))) e₁))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} {S' : Type.{u3}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] [_inst_3 : NonAssocSemiring.{u3} S'] (e₁ : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (e₂ : RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))), Eq.{max (succ u2) (succ u3)} (AddMonoidHom.{u2, u3} R S' (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R _inst_1)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3))))) (AddMonoidHomClass.toAddMonoidHom.{u2, u3, max u2 u3} R S' (RingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R _inst_1)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3)))) (RingHomClass.toAddMonoidHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquivClass.toRingHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))))) (RingEquiv.trans.{u2, u1, u3} R S S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) e₁ e₂)) (AddMonoidHom.comp.{u2, u1, u3} R S S' (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} S (AddMonoidWithOne.toAddMonoid.{u1} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} S (NonAssocSemiring.toAddCommMonoidWithOne.{u1} S _inst_2)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3)))) (AddMonoidHomClass.toAddMonoidHom.{u1, u3, max u1 u3} S S' (RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (AddMonoid.toAddZeroClass.{u1} S (AddMonoidWithOne.toAddMonoid.{u1} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} S (NonAssocSemiring.toAddCommMonoidWithOne.{u1} S _inst_2)))) (AddMonoid.toAddZeroClass.{u3} S' (AddMonoidWithOne.toAddMonoid.{u3} S' (AddCommMonoidWithOne.toAddMonoidWithOne.{u3} S' (NonAssocSemiring.toAddCommMonoidWithOne.{u3} S' _inst_3)))) (RingHomClass.toAddMonoidHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquivClass.toRingHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))))) e₂) (AddMonoidHomClass.toAddMonoidHom.{u2, u1, max u2 u1} R S (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} S (AddMonoidWithOne.toAddMonoid.{u1} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} S (NonAssocSemiring.toAddCommMonoidWithOne.{u1} S _inst_2)))) (RingHomClass.toAddMonoidHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))))) e₁))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_add_monoid_hom_trans RingEquiv.coe_addMonoidHom_transₓ'. -/
 @[simp]
 theorem coe_addMonoidHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
@@ -923,10 +854,7 @@ in higher generality -/
 
 
 /- warning: ring_equiv.coe_ring_hom_trans -> RingEquiv.coe_ringHom_trans is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {S' : Type.{u3}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] [_inst_3 : NonAssocSemiring.{u3} S'] (e₁ : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (e₂ : RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))), Eq.{max (succ u1) (succ u3)} (RingHom.{u1, u3} R S' _inst_1 _inst_3) ((fun (a : Sort.{max (succ u1) (succ u3)}) (b : Sort.{max (succ u1) (succ u3)}) [self : HasLiftT.{max (succ u1) (succ u3), max (succ u1) (succ u3)} a b] => self.0) (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (RingHom.{u1, u3} R S' _inst_1 _inst_3) (HasLiftT.mk.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (RingHom.{u1, u3} R S' _inst_1 _inst_3) (CoeTCₓ.coe.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (RingHom.{u1, u3} R S' _inst_1 _inst_3) (RingHom.hasCoeT.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquivClass.toRingHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquiv.ringEquivClass.{u1, u3} R S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))))))) (RingEquiv.trans.{u1, u2, u3} R S S' (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) e₁ e₂)) (RingHom.comp.{u1, u2, u3} R S S' _inst_1 _inst_2 _inst_3 ((fun (a : Sort.{max (succ u2) (succ u3)}) (b : Sort.{max (succ u2) (succ u3)}) [self : HasLiftT.{max (succ u2) (succ u3), max (succ u2) (succ u3)} a b] => self.0) (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (RingHom.{u2, u3} S S' _inst_2 _inst_3) (HasLiftT.mk.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (RingHom.{u2, u3} S S' _inst_2 _inst_3) (CoeTCₓ.coe.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) (RingHom.{u2, u3} S S' _inst_2 _inst_3) (RingHom.hasCoeT.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquivClass.toRingHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquiv.ringEquivClass.{u2, u3} S S' (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) (Distrib.toHasAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))))))) e₂) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) e₁))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} {S' : Type.{u3}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] [_inst_3 : NonAssocSemiring.{u3} S'] (e₁ : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (e₂ : RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))), Eq.{max (succ u2) (succ u3)} (RingHom.{u2, u3} R S' _inst_1 _inst_3) (RingHomClass.toRingHom.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquivClass.toRingHomClass.{max u2 u3, u2, u3} (RingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) R S' _inst_1 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u2, u3} R S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))))) (RingEquiv.trans.{u2, u1, u3} R S S' (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))) e₁ e₂)) (RingHom.comp.{u2, u1, u3} R S S' _inst_1 _inst_2 _inst_3 (RingHomClass.toRingHom.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquivClass.toRingHomClass.{max u1 u3, u1, u3} (RingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)))) S S' _inst_2 _inst_3 (RingEquiv.instRingEquivClassRingEquiv.{u1, u3} S S' (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u3} S' (NonUnitalNonAssocSemiring.toDistrib.{u3} S' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S' _inst_3))))) e₂) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) e₁))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_ring_hom_trans RingEquiv.coe_ringHom_transₓ'. -/
 @[simp]
 theorem coe_ringHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
@@ -935,10 +863,7 @@ theorem coe_ringHom_trans [NonAssocSemiring S'] (e₁ : R ≃+* S) (e₂ : S ≃
 #align ring_equiv.coe_ring_hom_trans RingEquiv.coe_ringHom_trans
 
 /- warning: ring_equiv.comp_symm -> RingEquiv.comp_symm is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{succ u2} (RingHom.{u2, u2} S S _inst_2 _inst_2) (RingHom.comp.{u2, u1, u2} S R S _inst_2 _inst_1 _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) e) ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u2) (succ u1), max (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (RingHom.{u2, u1} S R _inst_2 _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (RingHom.{u2, u1} S R _inst_2 _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (RingHom.{u2, u1} S R _inst_2 _inst_1) (RingHom.hasCoeT.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) S R _inst_2 _inst_1 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) S R _inst_2 _inst_1 (RingEquiv.ringEquivClass.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e))) (RingHom.id.{u2} S _inst_2)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{succ u1} (RingHom.{u1, u1} S S _inst_2 _inst_2) (RingHom.comp.{u1, u2, u1} S R S _inst_2 _inst_1 _inst_2 (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) e) (RingHomClass.toRingHom.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)))) S R _inst_2 _inst_1 (RingEquivClass.toRingHomClass.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)))) S R _inst_2 _inst_1 (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))))) (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e))) (RingHom.id.{u1} S _inst_2)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.comp_symm RingEquiv.comp_symmₓ'. -/
 @[simp]
 theorem comp_symm (e : R ≃+* S) : (e : R →+* S).comp (e.symm : S →+* R) = RingHom.id S :=
@@ -946,10 +871,7 @@ theorem comp_symm (e : R ≃+* S) : (e : R →+* S).comp (e.symm : S →+* R) =
 #align ring_equiv.comp_symm RingEquiv.comp_symm
 
 /- warning: ring_equiv.symm_comp -> RingEquiv.symm_comp is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{succ u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) (RingHom.comp.{u1, u2, u1} R S R _inst_1 _inst_2 _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Sort.{max (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u2) (succ u1), max (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (RingHom.{u2, u1} S R _inst_2 _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (RingHom.{u2, u1} S R _inst_2 _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (RingHom.{u2, u1} S R _inst_2 _inst_1) (RingHom.hasCoeT.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) S R _inst_2 _inst_1 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) S R _inst_2 _inst_1 (RingEquiv.ringEquivClass.{u2, u1} S R (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))))) (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) e)) (RingHom.id.{u1} R _inst_1)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{succ u2} (RingHom.{u2, u2} R R _inst_1 _inst_1) (RingHom.comp.{u2, u1, u2} R S R _inst_1 _inst_2 _inst_1 (RingHomClass.toRingHom.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)))) S R _inst_2 _inst_1 (RingEquivClass.toRingHomClass.{max u2 u1, u1, u2} (RingEquiv.{u1, u2} S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)))) S R _inst_2 _inst_1 (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))))) (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) e)) (RingHom.id.{u2} R _inst_1)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_comp RingEquiv.symm_compₓ'. -/
 @[simp]
 theorem symm_comp (e : R ≃+* S) : (e.symm : S →+* R).comp (e : R →+* S) = RingHom.id R :=
@@ -963,20 +885,14 @@ section NonUnitalRing
 variable [NonUnitalNonAssocRing R] [NonUnitalNonAssocRing S] (f : R ≃+* S) (x y : R)
 
 /- warning: ring_equiv.map_neg -> RingEquiv.map_neg is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : NonUnitalNonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (x : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1)))) x)) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddCommGroup.toAddGroup.{u2} S (NonUnitalNonAssocRing.toAddCommGroup.{u2} S _inst_2)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f x))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : NonUnitalNonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (NegZeroClass.toNeg.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R (SubtractionMonoid.toSubNegZeroMonoid.{u1} R (SubtractionCommMonoid.toSubtractionMonoid.{u1} R (AddCommGroup.toDivisionAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1)))))) x)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f (Neg.neg.{u1} R (NegZeroClass.toNeg.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R (SubtractionMonoid.toSubNegZeroMonoid.{u1} R (SubtractionCommMonoid.toSubtractionMonoid.{u1} R (AddCommGroup.toDivisionAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1)))))) x)) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NegZeroClass.toNeg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (SubNegZeroMonoid.toNegZeroClass.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (SubtractionMonoid.toSubNegZeroMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (SubtractionCommMonoid.toSubtractionMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (AddCommGroup.toDivisionAddCommMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonUnitalNonAssocRing.toAddCommGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2)))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_neg RingEquiv.map_negₓ'. -/
 protected theorem map_neg : f (-x) = -f x :=
   map_neg f x
 #align ring_equiv.map_neg RingEquiv.map_neg
 
 /- warning: ring_equiv.map_sub -> RingEquiv.map_sub is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : NonUnitalNonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (x : R) (y : R), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1))))) x y)) (HSub.hSub.{u2, u2, u2} S S S (instHSub.{u2} S (SubNegMonoid.toHasSub.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddCommGroup.toAddGroup.{u2} S (NonUnitalNonAssocRing.toAddCommGroup.{u2} S _inst_2))))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f y))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocRing.{u1} R] [_inst_2 : NonUnitalNonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (x : R) (y : R), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1))))) x y)) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddCommGroup.toAddGroup.{u1} R (NonUnitalNonAssocRing.toAddCommGroup.{u1} R _inst_1))))) x y)) (HSub.hSub.{u2, u2, u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) y) ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (instHSub.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (SubNegMonoid.toSub.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (AddGroup.toSubNegMonoid.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (AddCommGroup.toAddGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonUnitalNonAssocRing.toAddCommGroup.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R _inst_1) (NonUnitalNonAssocRing.toMul.{u2} S _inst_2) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f y))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_sub RingEquiv.map_subₓ'. -/
 protected theorem map_sub : f (x - y) = f x - f y :=
   map_sub f x y
@@ -989,10 +905,7 @@ section Ring
 variable [NonAssocRing R] [NonAssocRing S] (f : R ≃+* S) (x y : R)
 
 /- warning: ring_equiv.map_neg_one -> RingEquiv.map_neg_one is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) f (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))))))))) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (NonAssocRing.toAddCommGroupWithOne.{u2} S _inst_2))))) (OfNat.ofNat.{u2} S 1 (OfNat.mk.{u2} S 1 (One.one.{u2} S (AddMonoidWithOne.toOne.{u2} S (AddGroupWithOne.toAddMonoidWithOne.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (NonAssocRing.toAddCommGroupWithOne.{u2} S _inst_2))))))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))))))) f (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (AddGroupWithOne.toNeg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (AddCommGroupWithOne.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (NonAssocRing.toAddCommGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (NonAssocRing.toOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) _inst_2))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_neg_one RingEquiv.map_neg_oneₓ'. -/
 @[simp]
 theorem map_neg_one : f (-1) = -1 :=
@@ -1000,10 +913,7 @@ theorem map_neg_one : f (-1) = -1 :=
 #align ring_equiv.map_neg_one RingEquiv.map_neg_one
 
 /- warning: ring_equiv.map_eq_neg_one_iff -> RingEquiv.map_eq_neg_one_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) {x : R}, Iff (Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) f x) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (NonAssocRing.toAddCommGroupWithOne.{u2} S _inst_2))))) (OfNat.ofNat.{u2} S 1 (OfNat.mk.{u2} S 1 (One.one.{u2} S (AddMonoidWithOne.toOne.{u2} S (AddGroupWithOne.toAddMonoidWithOne.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (NonAssocRing.toAddCommGroupWithOne.{u2} S _inst_2))))))))) (Eq.{succ u1} R x (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1)))))))))
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) {x : R}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))))))) f x) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (AddGroupWithOne.toNeg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (AddCommGroupWithOne.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonAssocRing.toAddCommGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonAssocRing.toOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2))))) (Eq.{succ u1} R x (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_eq_neg_one_iff RingEquiv.map_eq_neg_one_iffₓ'. -/
 theorem map_eq_neg_one_iff {x : R} : f x = -1 ↔ x = -1 := by
   rw [← neg_eq_iff_eq_neg, ← neg_eq_iff_eq_neg, ← map_neg, RingEquiv.map_eq_one_iff]
@@ -1200,10 +1110,7 @@ theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
 #align ring_equiv.to_ring_hom_eq_coe RingEquiv.toRingHom_eq_coe
 
 /- warning: ring_equiv.coe_to_ring_hom -> RingEquiv.coe_toRingHom is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))))))) f)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_ring_hom RingEquiv.coe_toRingHomₓ'. -/
 @[simp, norm_cast]
 theorem coe_toRingHom (f : R ≃+* S) : ⇑(f : R →+* S) = f :=
@@ -1211,10 +1118,7 @@ theorem coe_toRingHom (f : R ≃+* S) : ⇑(f : R →+* S) = f :=
 #align ring_equiv.coe_to_ring_hom RingEquiv.coe_toRingHom
 
 /- warning: ring_equiv.coe_ring_hom_inj_iff -> RingEquiv.coe_ringHom_inj_iff is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_4 : NonAssocSemiring.{u1} R] [_inst_5 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) (g : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))), Iff (Eq.{max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) f g) (Eq.{max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_4 _inst_5) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) (RingHom.{u1, u2} R S _inst_4 _inst_5) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) (RingHom.{u1, u2} R S _inst_4 _inst_5) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) (RingHom.{u1, u2} R S _inst_4 _inst_5) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) R S _inst_4 _inst_5 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) R S _inst_4 _inst_5 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))))))) f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) (RingHom.{u1, u2} R S _inst_4 _inst_5) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) (RingHom.{u1, u2} R S _inst_4 _inst_5) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) (RingHom.{u1, u2} R S _inst_4 _inst_5) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) R S _inst_4 _inst_5 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))) R S _inst_4 _inst_5 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_4))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_5)))))))) g))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_4 : NonAssocSemiring.{u2} R] [_inst_5 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)))) (g : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)))), Iff (Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)))) f g) (Eq.{max (succ u2) (succ u1)} (RingHom.{u2, u1} R S _inst_4 _inst_5) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)))) R S _inst_4 _inst_5 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)))) R S _inst_4 _inst_5 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5))))) f) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)))) R S _inst_4 _inst_5 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)))) R S _inst_4 _inst_5 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_4))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_5))))) g))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_ring_hom_inj_iff RingEquiv.coe_ringHom_inj_iffₓ'. -/
 theorem coe_ringHom_inj_iff {R S : Type _} [NonAssocSemiring R] [NonAssocSemiring S]
     (f g : R ≃+* S) : f = g ↔ (f : R →+* S) = g :=
@@ -1222,10 +1126,7 @@ theorem coe_ringHom_inj_iff {R S : Type _} [NonAssocSemiring R] [NonAssocSemirin
 #align ring_equiv.coe_ring_hom_inj_iff RingEquiv.coe_ringHom_inj_iff
 
 /- warning: ring_equiv.to_non_unital_ring_hom_commutes -> RingEquiv.toNonUnitalRingHom_commutes is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingHom.{u1, u2} R S _inst_1 _inst_2) (NonUnitalRingHom.{u1, u2} R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (NonUnitalRingHom.{u1, u2} R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (NonUnitalRingHom.{u1, u2} R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (NonUnitalRingHom.hasCoeT.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.ringHomClass.{u1, u2} R S _inst_1 _inst_2))))) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (NonUnitalRingHom.{u1, u2} R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (NonUnitalRingHom.{u1, u2} R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (NonUnitalRingHom.{u1, u2} R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)) (NonUnitalRingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2) (RingEquivClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2) (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_commutes RingEquiv.toNonUnitalRingHom_commutesₓ'. -/
 /-- The two paths coercion can take to a `non_unital_ring_hom` are equivalent -/
 @[simp, norm_cast]
@@ -1256,10 +1157,7 @@ abbrev toAddMonoidHom (e : R ≃+* S) : R →+ S :=
 #align ring_equiv.to_add_monoid_hom RingEquiv.toAddMonoidHom
 
 /- warning: ring_equiv.to_add_monoid_hom_commutes -> RingEquiv.toAddMonoidMom_commutes is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (AddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2))))) (RingHom.toAddMonoidHom.{u1, u2} R S _inst_1 _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)) (AddEquiv.toAddMonoidHom.{u1, u2} R S (AddMonoid.toAddZeroClass.{u1} R (AddMonoidWithOne.toAddMonoid.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{u2} S (AddMonoidWithOne.toAddMonoid.{u2} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} S (NonAssocSemiring.toAddCommMonoidWithOne.{u2} S _inst_2)))) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddEquiv.{u1, u2} R S (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddEquiv.{u1, u2} R S (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddEquiv.{u1, u2} R S (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquivClass.toAddEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (AddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} S (AddMonoidWithOne.toAddMonoid.{u1} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} S (NonAssocSemiring.toAddCommMonoidWithOne.{u1} S _inst_2))))) (RingHom.toAddMonoidHom.{u2, u1} R S _inst_1 _inst_2 (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (AddEquiv.toAddMonoidHom.{u2, u1} R S (AddMonoid.toAddZeroClass.{u2} R (AddMonoidWithOne.toAddMonoid.{u2} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u2} R (NonAssocSemiring.toAddCommMonoidWithOne.{u2} R _inst_1)))) (AddMonoid.toAddZeroClass.{u1} S (AddMonoidWithOne.toAddMonoid.{u1} S (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} S (NonAssocSemiring.toAddCommMonoidWithOne.{u1} S _inst_2)))) (AddEquivClass.toAddEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquivClass.toAddEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_add_monoid_hom_commutes RingEquiv.toAddMonoidMom_commutesₓ'. -/
 /-- The two paths coercion can take to an `add_monoid_hom` are equivalent -/
 theorem toAddMonoidMom_commutes (f : R ≃+* S) :
@@ -1268,10 +1166,7 @@ theorem toAddMonoidMom_commutes (f : R ≃+* S) :
 #align ring_equiv.to_add_monoid_hom_commutes RingEquiv.toAddMonoidMom_commutes
 
 /- warning: ring_equiv.to_monoid_hom_commutes -> RingEquiv.toMonoidHom_commutes is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2))) (RingHom.toMonoidHom.{u1, u2} R S _inst_1 _inst_2 ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)) (MulEquiv.toMonoidHom.{u1, u2} R S (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u2} S (NonAssocSemiring.toMulZeroOneClass.{u2} S _inst_2)) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MulEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MulEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MulEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MulEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (MonoidHom.{u2, u1} R S (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S _inst_2))) (RingHom.toMonoidHom.{u2, u1} R S _inst_1 _inst_2 (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (MulEquiv.toMonoidHom.{u2, u1} R S (MulZeroOneClass.toMulOneClass.{u2} R (NonAssocSemiring.toMulZeroOneClass.{u2} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} S (NonAssocSemiring.toMulZeroOneClass.{u1} S _inst_2)) (MulEquivClass.toMulEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_monoid_hom_commutes RingEquiv.toMonoidHom_commutesₓ'. -/
 /-- The two paths coercion can take to an `monoid_hom` are equivalent -/
 theorem toMonoidHom_commutes (f : R ≃+* S) : (f : R →+* S).toMonoidHom = (f : R ≃* S).toMonoidHom :=
@@ -1279,10 +1174,7 @@ theorem toMonoidHom_commutes (f : R ≃+* S) : (f : R →+* S).toMonoidHom = (f
 #align ring_equiv.to_monoid_hom_commutes RingEquiv.toMonoidHom_commutes
 
 /- warning: ring_equiv.to_equiv_commutes -> RingEquiv.toEquiv_commutes is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{succ u1, succ u2} R S) (AddEquiv.toEquiv.{u1, u2} R S (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddEquiv.{u1, u2} R S (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddEquiv.{u1, u2} R S (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddEquiv.{u1, u2} R S (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (AddEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquivClass.toAddEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)) (MulEquiv.toEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MulEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MulEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MulEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (MulEquiv.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f))
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} R S) (AddEquiv.toEquiv.{u2, u1} R S (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (AddEquivClass.toAddEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquivClass.toAddEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (MulEquiv.toEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (MulEquivClass.toMulEquiv.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_equiv_commutes RingEquiv.toEquiv_commutesₓ'. -/
 /-- The two paths coercion can take to an `equiv` are equivalent -/
 theorem toEquiv_commutes (f : R ≃+* S) : (f : R ≃+ S).toEquiv = (f : R ≃* S).toEquiv :=
@@ -1426,10 +1318,7 @@ section GroupPower
 variable [Semiring R] [Semiring S]
 
 /- warning: ring_equiv.map_pow -> RingEquiv.map_pow is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : Semiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) (a : R) (n : Nat), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) a n)) (HPow.hPow.{u2, 0, u2} S Nat S (instHPow.{u2, 0} S Nat (Monoid.Pow.{u2} S (MonoidWithZero.toMonoid.{u2} S (Semiring.toMonoidWithZero.{u2} S _inst_2)))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S _inst_2))))) f a) n)
-but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Semiring.{u2} R] [_inst_2 : Semiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) (a : R) (n : Nat), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (HPow.hPow.{u2, 0, u2} R Nat R (instHPow.{u2, 0} R Nat (Monoid.Pow.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) a n)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2)))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))))))) f (HPow.hPow.{u2, 0, u2} R Nat R (instHPow.{u2, 0} R Nat (Monoid.Pow.{u2} R (MonoidWithZero.toMonoid.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_1)))) a n)) (HPow.hPow.{u1, 0, u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) Nat ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (instHPow.{u1, 0} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) Nat (Monoid.Pow.{u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (MonoidWithZero.toMonoid.{u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) _inst_2)))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2)))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_1)))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_2))))))))) f a) n)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_pow RingEquiv.map_powₓ'. -/
 protected theorem map_pow (f : R ≃+* S) (a) : ∀ n : ℕ, f (a ^ n) = f a ^ n :=
   map_pow f a
Diff
@@ -179,7 +179,7 @@ theorem [anonymous] (f : R ≃+* S) : f.toFun = f :=
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} R S) (fun (_x : Equiv.{succ u1, succ u2} R S) => R -> S) (Equiv.hasCoeToFun.{succ u1, succ u2} R S) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (HasLiftT.mk.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (CoeTCₓ.coe.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (Equiv.hasCoeT.{succ u1, succ u2, max (succ u1) (succ u2)} R S (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4)))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f)
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} R S) R (fun (_x : R) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : R) => S) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} R S) (EquivLike.toEquiv.{succ u2, succ u1, max (succ u2) (succ u1)} R S (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} R S) R (fun (_x : R) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : R) => S) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} R S) (EquivLike.toEquiv.{succ u2, succ u1, max (succ u2) (succ u1)} R S (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_equiv RingEquiv.coe_toEquivₓ'. -/
 @[simp]
 theorem coe_toEquiv (f : R ≃+* S) : ⇑(f : R ≃ S) = f :=
@@ -725,7 +725,7 @@ theorem map_ne_zero_iff : f x ≠ 0 ↔ x ≠ 0 :=
 lean 3 declaration is
   forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)) -> (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
 but is expected to have type
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (FunLike.coe.{succ u1, succ u2, succ u3} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3)) f)) -> (RingEquiv.{u2, u3} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
+  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (FunLike.coe.{succ u1, succ u2, succ u3} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3)) f)) -> (RingEquiv.{u2, u3} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.of_bijective RingEquiv.ofBijectiveₓ'. -/
 /-- Produce a ring isomorphism from a bijective ring homomorphism. -/
 noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
@@ -739,7 +739,7 @@ noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Functi
 lean 3 declaration is
   forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)), Eq.{max (succ u2) (succ u3)} ((fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)
 but is expected to have type
-  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)), Eq.{max (succ u2) (succ u1)} (forall (a : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf)) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)
+  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)), Eq.{max (succ u2) (succ u1)} (forall (a : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf)) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_of_bijective RingEquiv.coe_ofBijectiveₓ'. -/
 @[simp]
 theorem coe_ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
@@ -751,7 +751,7 @@ theorem coe_ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bij
 lean 3 declaration is
   forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)) (x : R), Eq.{succ u3} S (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf) x) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f x)
 but is expected to have type
-  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)) (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf) x) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f x)
+  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)) (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf) x) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f x)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.of_bijective_apply RingEquiv.ofBijective_applyₓ'. -/
 theorem ofBijective_apply [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f)
     (x : R) : ofBijective f hf x = f x :=
@@ -1063,7 +1063,7 @@ theorem toNonUnitalRingHom_eq_coe (f : R ≃+* S) : f.toNonUnitalRingHom = ↑f
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (NonUnitalRingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) f)
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) f)
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_non_unital_ring_hom RingEquiv.coe_toNonUnitalRingHomₓ'. -/
 @[simp, norm_cast]
 theorem coe_toNonUnitalRingHom (f : R ≃+* S) : ⇑(f : R →ₙ+* S) = f :=
@@ -1092,7 +1092,7 @@ theorem toNonUnitalRingHom_refl : (RingEquiv.refl R).toNonUnitalRingHom = NonUni
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (y : S), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (NonUnitalRingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e)) y)) y
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) y
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) y
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_applyₓ'. -/
 @[simp]
 theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
@@ -1104,7 +1104,7 @@ theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (x : R), Eq.{succ u1} R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (NonUnitalRingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e) x)) x
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_applyₓ'. -/
 @[simp]
 theorem symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply (e : R ≃+* S) :
@@ -1203,7 +1203,7 @@ theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f)
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))))))) f)
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))))))) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_ring_hom RingEquiv.coe_toRingHomₓ'. -/
 @[simp, norm_cast]
 theorem coe_toRingHom (f : R ≃+* S) : ⇑(f : R →+* S) = f :=
@@ -1314,7 +1314,7 @@ theorem toAddMonoidHom_refl : (RingEquiv.refl R).toAddMonoidHom = AddMonoidHom.i
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (y : S), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : RingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (RingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) y)) y
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) y
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) y
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_applyₓ'. -/
 @[simp]
 theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
@@ -1326,7 +1326,7 @@ theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (x : R), Eq.{succ u1} R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : RingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (RingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e) x)) x
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply RingEquiv.symm_toRingHom_apply_toRingHom_applyₓ'. -/
 @[simp]
 theorem symm_toRingHom_apply_toRingHom_apply (e : R ≃+* S) :
Diff
@@ -999,6 +999,12 @@ theorem map_neg_one : f (-1) = -1 :=
   f.map_one ▸ f.map_neg 1
 #align ring_equiv.map_neg_one RingEquiv.map_neg_one
 
+/- warning: ring_equiv.map_eq_neg_one_iff -> RingEquiv.map_eq_neg_one_iff is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) {x : R}, Iff (Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) f x) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (NonAssocRing.toAddCommGroupWithOne.{u2} S _inst_2))))) (OfNat.ofNat.{u2} S 1 (OfNat.mk.{u2} S 1 (One.one.{u2} S (AddMonoidWithOne.toOne.{u2} S (AddGroupWithOne.toAddMonoidWithOne.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (NonAssocRing.toAddCommGroupWithOne.{u2} S _inst_2))))))))) (Eq.{succ u1} R x (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1)))))))))
+but is expected to have type
+  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) {x : R}, Iff (Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))))))) f x) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (AddGroupWithOne.toNeg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (AddCommGroupWithOne.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonAssocRing.toAddCommGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (NonAssocRing.toOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) _inst_2))))) (Eq.{succ u1} R x (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align ring_equiv.map_eq_neg_one_iff RingEquiv.map_eq_neg_one_iffₓ'. -/
 theorem map_eq_neg_one_iff {x : R} : f x = -1 ↔ x = -1 := by
   rw [← neg_eq_iff_eq_neg, ← neg_eq_iff_eq_neg, ← map_neg, RingEquiv.map_eq_one_iff]
 #align ring_equiv.map_eq_neg_one_iff RingEquiv.map_eq_neg_one_iff
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 
 ! This file was ported from Lean 3 source module algebra.ring.equiv
-! leanprover-community/mathlib commit c3291da49cfa65f0d43b094750541c0731edc932
+! leanprover-community/mathlib commit 00f91228655eecdcd3ac97a7fd8dbcb139fe990a
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -999,6 +999,10 @@ theorem map_neg_one : f (-1) = -1 :=
   f.map_one ▸ f.map_neg 1
 #align ring_equiv.map_neg_one RingEquiv.map_neg_one
 
+theorem map_eq_neg_one_iff {x : R} : f x = -1 ↔ x = -1 := by
+  rw [← neg_eq_iff_eq_neg, ← neg_eq_iff_eq_neg, ← map_neg, RingEquiv.map_eq_one_iff]
+#align ring_equiv.map_eq_neg_one_iff RingEquiv.map_eq_neg_one_iff
+
 end Ring
 
 section NonUnitalSemiringHom
Diff
@@ -93,7 +93,7 @@ instance (priority := 100) toAddEquivClass (F R S : Type _) [Mul R] [Add R] [Mul
 lean 3 declaration is
   forall (F : Type.{u1}) (R : Type.{u2}) (S : Type.{u3}) [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u3} S] [h : RingEquivClass.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2))) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2)))], RingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
 but is expected to have type
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} {_inst_1 : NonAssocSemiring.{u2} R} {_inst_2 : NonAssocSemiring.{u3} S} [h : RingEquivClass.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2)))], RingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
+  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u3} S] [h : RingEquivClass.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S _inst_2)))], RingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
 Case conversion may be inaccurate. Consider using '#align ring_equiv_class.to_ring_hom_class RingEquivClass.toRingHomClassₓ'. -/
 -- See note [lower instance priority]
 instance (priority := 100) toRingHomClass (F R S : Type _) [NonAssocSemiring R] [NonAssocSemiring S]
@@ -109,7 +109,7 @@ instance (priority := 100) toRingHomClass (F R S : Type _) [NonAssocSemiring R]
 lean 3 declaration is
   forall (F : Type.{u1}) (R : Type.{u2}) (S : Type.{u3}) [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [h : RingEquivClass.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))], NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
 but is expected to have type
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} {_inst_1 : NonUnitalNonAssocSemiring.{u2} R} {_inst_2 : NonUnitalNonAssocSemiring.{u3} S} [h : RingEquivClass.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))], NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
+  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [h : RingEquivClass.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))], NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2
 Case conversion may be inaccurate. Consider using '#align ring_equiv_class.to_non_unital_ring_hom_class RingEquivClass.toNonUnitalRingHomClassₓ'. -/
 -- See note [lower instance priority]
 instance (priority := 100) toNonUnitalRingHomClass (F R S : Type _) [NonUnitalNonAssocSemiring R]
Diff
@@ -990,7 +990,7 @@ variable [NonAssocRing R] [NonAssocRing S] (f : R ≃+* S) (x y : R)
 
 /- warning: ring_equiv.map_neg_one -> RingEquiv.map_neg_one is a dubious translation:
 lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) f (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)))))))) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (NonAssocRing.toAddGroupWithOne.{u2} S _inst_2)))) (OfNat.ofNat.{u2} S 1 (OfNat.mk.{u2} S 1 (One.one.{u2} S (AddMonoidWithOne.toOne.{u2} S (AddGroupWithOne.toAddMonoidWithOne.{u2} S (NonAssocRing.toAddGroupWithOne.{u2} S _inst_2)))))))
+  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) f (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))))))))) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (NonAssocRing.toAddCommGroupWithOne.{u2} S _inst_2))))) (OfNat.ofNat.{u2} S 1 (OfNat.mk.{u2} S 1 (One.one.{u2} S (AddMonoidWithOne.toOne.{u2} S (AddGroupWithOne.toAddMonoidWithOne.{u2} S (AddCommGroupWithOne.toAddGroupWithOne.{u2} S (NonAssocRing.toAddCommGroupWithOne.{u2} S _inst_2))))))))
 but is expected to have type
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))))))) f (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (AddGroupWithOne.toNeg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (AddCommGroupWithOne.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (NonAssocRing.toAddCommGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (NonAssocRing.toOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) _inst_2))))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_neg_one RingEquiv.map_neg_oneₓ'. -/
Diff
@@ -992,7 +992,7 @@ variable [NonAssocRing R] [NonAssocRing S] (f : R ≃+* S) (x y : R)
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) f (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (AddGroupWithOne.toAddGroup.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)))))))) (Neg.neg.{u2} S (SubNegMonoid.toHasNeg.{u2} S (AddGroup.toSubNegMonoid.{u2} S (AddGroupWithOne.toAddGroup.{u2} S (NonAssocRing.toAddGroupWithOne.{u2} S _inst_2)))) (OfNat.ofNat.{u2} S 1 (OfNat.mk.{u2} S 1 (One.one.{u2} S (AddMonoidWithOne.toOne.{u2} S (AddGroupWithOne.toAddMonoidWithOne.{u2} S (NonAssocRing.toAddGroupWithOne.{u2} S _inst_2)))))))
 but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))))))) f (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (AddGroupWithOne.toNeg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (NonAssocRing.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) _inst_2)) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (NonAssocRing.toOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (NonAssocRing.toAddGroupWithOne.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) _inst_2))))
+  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocRing.{u1} R] [_inst_2 : NonAssocRing.{u2} S] (f : RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))), Eq.{succ u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (EquivLike.toEmbeddingLike.{max (succ u1) (succ u2), succ u1, succ u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))) R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)))) (RingEquiv.instRingEquivClassRingEquiv.{u1, u2} R S (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)) (NonUnitalNonAssocRing.toMul.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R _inst_1)))) (Distrib.toAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S _inst_2))))))))) f (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (Neg.neg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (AddGroupWithOne.toNeg.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (AddCommGroupWithOne.toAddGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (NonAssocRing.toAddCommGroupWithOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) _inst_2))) (OfNat.ofNat.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) 1 (One.toOfNat1.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) (NonAssocRing.toOne.{u2} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) (Neg.neg.{u1} R (AddGroupWithOne.toNeg.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (NonAssocRing.toAddCommGroupWithOne.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (NonAssocRing.toOne.{u1} R _inst_1))))) _inst_2))))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.map_neg_one RingEquiv.map_neg_oneₓ'. -/
 @[simp]
 theorem map_neg_one : f (-1) = -1 :=
Diff
@@ -621,7 +621,7 @@ open MulOpposite
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} α β _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.hasMul.{u1} α _inst_2) (MulOpposite.hasAdd.{u1} α _inst_1) (MulOpposite.hasMul.{u2} β _inst_4) (MulOpposite.hasAdd.{u2} β _inst_3))
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} α β _inst_2 _inst_4 _inst_1 _inst_3) (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.instMulMulOpposite.{u1} α _inst_2) (MulOpposite.instMulMulOpposite.{u2} β _inst_4) (MulOpposite.instAddMulOpposite.{u1} α _inst_1) (MulOpposite.instAddMulOpposite.{u2} β _inst_3))
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} α β _inst_2 _inst_4 _inst_1 _inst_3) (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.mul.{u1} α _inst_2) (MulOpposite.mul.{u2} β _inst_4) (MulOpposite.add.{u1} α _inst_1) (MulOpposite.add.{u2} β _inst_3))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.op RingEquiv.opₓ'. -/
 /-- A ring iso `α ≃+* β` can equivalently be viewed as a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. -/
 @[simps]
@@ -641,7 +641,7 @@ protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] : α ≃+* β ≃ (
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.hasMul.{u1} α _inst_2) (MulOpposite.hasAdd.{u1} α _inst_1) (MulOpposite.hasMul.{u2} β _inst_4) (MulOpposite.hasAdd.{u2} β _inst_3)) (RingEquiv.{u1, u2} α β _inst_2 _inst_1 _inst_4 _inst_3)
 but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.instMulMulOpposite.{u1} α _inst_2) (MulOpposite.instMulMulOpposite.{u2} β _inst_4) (MulOpposite.instAddMulOpposite.{u1} α _inst_1) (MulOpposite.instAddMulOpposite.{u2} β _inst_3)) (RingEquiv.{u1, u2} α β _inst_2 _inst_4 _inst_1 _inst_3)
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Add.{u1} α] [_inst_2 : Mul.{u1} α] [_inst_3 : Add.{u2} β] [_inst_4 : Mul.{u2} β], Equiv.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingEquiv.{u1, u2} (MulOpposite.{u1} α) (MulOpposite.{u2} β) (MulOpposite.mul.{u1} α _inst_2) (MulOpposite.mul.{u2} β _inst_4) (MulOpposite.add.{u1} α _inst_1) (MulOpposite.add.{u2} β _inst_3)) (RingEquiv.{u1, u2} α β _inst_2 _inst_4 _inst_1 _inst_3)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.unop RingEquiv.unopₓ'. -/
 /-- The 'unopposite' of a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. Inverse to `ring_equiv.op`. -/
 @[simp]
@@ -657,7 +657,7 @@ variable (R) [NonUnitalCommSemiring R]
 lean 3 declaration is
   forall (R : Type.{u1}) [_inst_1 : NonUnitalCommSemiring.{u1} R], RingEquiv.{u1, u1} R (MulOpposite.{u1} R) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (MulOpposite.hasMul.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1))))) (MulOpposite.hasAdd.{u1} R (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))))
 but is expected to have type
-  forall (R : Type.{u1}) [_inst_1 : NonUnitalCommSemiring.{u1} R], RingEquiv.{u1, u1} R (MulOpposite.{u1} R) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1))) (MulOpposite.instMulMulOpposite.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (MulOpposite.instAddMulOpposite.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))))
+  forall (R : Type.{u1}) [_inst_1 : NonUnitalCommSemiring.{u1} R], RingEquiv.{u1, u1} R (MulOpposite.{u1} R) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1))) (MulOpposite.mul.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))) (MulOpposite.add.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalSemiring.toNonUnitalNonAssocSemiring.{u1} R (NonUnitalCommSemiring.toNonUnitalSemiring.{u1} R _inst_1)))))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_opposite RingEquiv.toOppositeₓ'. -/
 /-- A non-unital commutative ring is isomorphic to its opposite. -/
 def toOpposite : R ≃+* Rᵐᵒᵖ :=
Diff
@@ -152,17 +152,16 @@ instance : RingEquivClass (R ≃+* S) R S where
 instance : CoeFun (R ≃+* S) fun _ => R → S :=
   ⟨RingEquiv.toFun⟩
 
-/- warning: ring_equiv.to_equiv_eq_coe clashes with [anonymous] -> [anonymous]
-warning: ring_equiv.to_equiv_eq_coe -> [anonymous] is a dubious translation:
+/- warning: ring_equiv.to_equiv_eq_coe -> RingEquiv.toEquiv_eq_coe is a dubious translation:
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (Equiv.{succ u1, succ u2} R S) (RingEquiv.toEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (HasLiftT.mk.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (CoeTCₓ.coe.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (Equiv.hasCoeT.{succ u1, succ u2, max (succ u1) (succ u2)} R S (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4)))))) f)
 but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}}, (Nat -> R -> S) -> Nat -> (List.{u1} R) -> (List.{u2} S)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.to_equiv_eq_coe [anonymous]ₓ'. -/
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (Equiv.{succ u2, succ u1} R S) (RingEquiv.toEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 f) (EquivLike.toEquiv.{succ u2, succ u1, max (succ u2) (succ u1)} R S (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))) f)
+Case conversion may be inaccurate. Consider using '#align ring_equiv.to_equiv_eq_coe RingEquiv.toEquiv_eq_coeₓ'. -/
 @[simp]
-theorem [anonymous] (f : R ≃+* S) : f.toEquiv = f :=
+theorem toEquiv_eq_coe (f : R ≃+* S) : f.toEquiv = f :=
   rfl
-#align ring_equiv.to_equiv_eq_coe [anonymous]
+#align ring_equiv.to_equiv_eq_coe RingEquiv.toEquiv_eq_coe
 
 /- warning: ring_equiv.to_fun_eq_coe clashes with [anonymous] -> [anonymous]
 warning: ring_equiv.to_fun_eq_coe -> [anonymous] is a dubious translation:
@@ -460,7 +459,7 @@ theorem mk_coe' (e : R ≃+* S) (f h₁ h₂ h₃ h₄) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u1, succ u2} R S g f) (h₂ : Function.RightInverse.{succ u1, succ u2} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u2} S (f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) (f x) (f y))) (h₄ : forall (x : R) (y : R), Eq.{succ u2} S (f (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) (f x) (f y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄)) (RingEquiv.mk.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 g f (RingEquiv.left_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.right_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_mul'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_add'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))))
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590))
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2626))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_mk RingEquiv.symm_mkₓ'. -/
 @[simp]
 theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
Diff
@@ -176,17 +176,16 @@ theorem [anonymous] (f : R ≃+* S) : f.toFun = f :=
   rfl
 #align ring_equiv.to_fun_eq_coe [anonymous]
 
-/- warning: ring_equiv.coe_to_equiv clashes with [anonymous] -> [anonymous]
-warning: ring_equiv.coe_to_equiv -> [anonymous] is a dubious translation:
+/- warning: ring_equiv.coe_to_equiv -> RingEquiv.coe_toEquiv is a dubious translation:
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1), max (succ u1) (succ u2)} (Equiv.{succ u1, succ u2} R S) (fun (_x : Equiv.{succ u1, succ u2} R S) => R -> S) (Equiv.hasCoeToFun.{succ u1, succ u2} R S) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)}) [self : HasLiftT.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} a b] => self.0) (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (HasLiftT.mk.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (CoeTCₓ.coe.{max (succ u1) (succ u2), max 1 (max (succ u1) (succ u2)) (succ u2) (succ u1)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (Equiv.{succ u1, succ u2} R S) (Equiv.hasCoeT.{succ u1, succ u2, max (succ u1) (succ u2)} R S (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 (RingEquivClass.toMulEquivClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.ringEquivClass.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4)))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) f)
 but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}}, (Nat -> R -> S) -> Nat -> (List.{u1} R) -> (List.{u2} S)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_equiv [anonymous]ₓ'. -/
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (Equiv.{succ u2, succ u1} R S) R (fun (_x : R) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : R) => S) _x) (Equiv.instFunLikeEquiv.{succ u2, succ u1} R S) (EquivLike.toEquiv.{succ u2, succ u1, max (succ u2) (succ u1)} R S (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_2 (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4) R S _inst_1 _inst_3 _inst_2 _inst_4 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4))))) f)
+Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_equiv RingEquiv.coe_toEquivₓ'. -/
 @[simp]
-theorem [anonymous] (f : R ≃+* S) : ⇑(f : R ≃ S) = f :=
+theorem coe_toEquiv (f : R ≃+* S) : ⇑(f : R ≃ S) = f :=
   rfl
-#align ring_equiv.coe_to_equiv [anonymous]
+#align ring_equiv.coe_to_equiv RingEquiv.coe_toEquiv
 
 /- warning: ring_equiv.map_mul -> RingEquiv.map_mul is a dubious translation:
 lean 3 declaration is
@@ -223,17 +222,10 @@ theorem ext {f g : R ≃+* S} (h : ∀ x, f x = g x) : f = g :=
   FunLike.ext f g h
 #align ring_equiv.ext RingEquiv.ext
 
-/- warning: ring_equiv.coe_mk clashes with [anonymous] -> [anonymous]
-warning: ring_equiv.coe_mk -> [anonymous] is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (e : R -> S) (e' : S -> R) (h₁ : Function.LeftInverse.{succ u1, succ u2} R S e' e) (h₂ : Function.RightInverse.{succ u1, succ u2} R S e' e) (h₃ : forall (x : R) (y : R), Eq.{succ u2} S (e (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) (e x) (e y))) (h₄ : forall (x : R) (y : R), Eq.{succ u2} S (e (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) (e x) (e y))), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (fun (_x : RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 e e' h₁ h₂ h₃ h₄)) e
-but is expected to have type
-  forall {R : Type.{u1}} {S : Type.{u2}}, (Nat -> R -> S) -> Nat -> (List.{u1} R) -> (List.{u2} S)
-Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_mk [anonymous]ₓ'. -/
 @[simp]
-theorem [anonymous] (e e' h₁ h₂ h₃ h₄) : ⇑(⟨e, e', h₁, h₂, h₃, h₄⟩ : R ≃+* S) = e :=
+theorem coe_mk (e e' h₁ h₂ h₃ h₄) : ⇑(⟨e, e', h₁, h₂, h₃, h₄⟩ : R ≃+* S) = e :=
   rfl
-#align ring_equiv.coe_mk [anonymous]
+#align ring_equiv.coe_mk RingEquiv.coe_mkₓ
 
 /- warning: ring_equiv.mk_coe -> RingEquiv.mk_coe is a dubious translation:
 lean 3 declaration is
@@ -468,7 +460,7 @@ theorem mk_coe' (e : R ≃+* S) (f h₁ h₂ h₃ h₄) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u1, succ u2} R S g f) (h₂ : Function.RightInverse.{succ u1, succ u2} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u2} S (f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) (f x) (f y))) (h₄ : forall (x : R) (y : R), Eq.{succ u2} S (f (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) (f x) (f y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄)) (RingEquiv.mk.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 g f (RingEquiv.left_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.right_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_mul'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_add'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))))
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496))
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2590))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_mk RingEquiv.symm_mkₓ'. -/
 @[simp]
 theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
Diff
@@ -468,7 +468,7 @@ theorem mk_coe' (e : R ≃+* S) (f h₁ h₂ h₃ h₄) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u1, succ u2} R S g f) (h₂ : Function.RightInverse.{succ u1, succ u2} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u2} S (f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) (f x) (f y))) (h₄ : forall (x : R) (y : R), Eq.{succ u2} S (f (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) (f x) (f y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄)) (RingEquiv.mk.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 g f (RingEquiv.left_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.right_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_mul'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_add'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))))
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470))
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2496))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_mk RingEquiv.symm_mkₓ'. -/
 @[simp]
 theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
@@ -734,7 +734,7 @@ theorem map_ne_zero_iff : f x ≠ 0 ↔ x ≠ 0 :=
 lean 3 declaration is
   forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)) -> (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
 but is expected to have type
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (FunLike.coe.{succ u1, succ u2, succ u3} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3)) f)) -> (RingEquiv.{u2, u3} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
+  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (FunLike.coe.{succ u1, succ u2, succ u3} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3)) f)) -> (RingEquiv.{u2, u3} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.of_bijective RingEquiv.ofBijectiveₓ'. -/
 /-- Produce a ring isomorphism from a bijective ring homomorphism. -/
 noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
@@ -748,7 +748,7 @@ noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Functi
 lean 3 declaration is
   forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)), Eq.{max (succ u2) (succ u3)} ((fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)
 but is expected to have type
-  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)), Eq.{max (succ u2) (succ u1)} (forall (a : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf)) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)
+  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)), Eq.{max (succ u2) (succ u1)} (forall (a : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf)) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_of_bijective RingEquiv.coe_ofBijectiveₓ'. -/
 @[simp]
 theorem coe_ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
@@ -760,7 +760,7 @@ theorem coe_ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bij
 lean 3 declaration is
   forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)) (x : R), Eq.{succ u3} S (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf) x) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f x)
 but is expected to have type
-  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)) (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf) x) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f x)
+  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)) (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf) x) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f x)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.of_bijective_apply RingEquiv.ofBijective_applyₓ'. -/
 theorem ofBijective_apply [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f)
     (x : R) : ofBijective f hf x = f x :=
@@ -1062,7 +1062,7 @@ theorem toNonUnitalRingHom_eq_coe (f : R ≃+* S) : f.toNonUnitalRingHom = ↑f
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (NonUnitalRingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) f)
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) f)
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_non_unital_ring_hom RingEquiv.coe_toNonUnitalRingHomₓ'. -/
 @[simp, norm_cast]
 theorem coe_toNonUnitalRingHom (f : R ≃+* S) : ⇑(f : R →ₙ+* S) = f :=
@@ -1091,7 +1091,7 @@ theorem toNonUnitalRingHom_refl : (RingEquiv.refl R).toNonUnitalRingHom = NonUni
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (y : S), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (NonUnitalRingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e)) y)) y
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) y
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) y
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_applyₓ'. -/
 @[simp]
 theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
@@ -1103,7 +1103,7 @@ theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (x : R), Eq.{succ u1} R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (NonUnitalRingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e) x)) x
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_applyₓ'. -/
 @[simp]
 theorem symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply (e : R ≃+* S) :
@@ -1202,7 +1202,7 @@ theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f)
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))))))) f)
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))))))) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_ring_hom RingEquiv.coe_toRingHomₓ'. -/
 @[simp, norm_cast]
 theorem coe_toRingHom (f : R ≃+* S) : ⇑(f : R →+* S) = f :=
@@ -1313,7 +1313,7 @@ theorem toAddMonoidHom_refl : (RingEquiv.refl R).toAddMonoidHom = AddMonoidHom.i
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (y : S), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : RingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (RingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) y)) y
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) y
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) y
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_applyₓ'. -/
 @[simp]
 theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
@@ -1325,7 +1325,7 @@ theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (x : R), Eq.{succ u1} R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : RingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (RingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e) x)) x
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply RingEquiv.symm_toRingHom_apply_toRingHom_applyₓ'. -/
 @[simp]
 theorem symm_toRingHom_apply_toRingHom_apply (e : R ≃+* S) :
Diff
@@ -468,7 +468,7 @@ theorem mk_coe' (e : R ≃+* S) (f h₁ h₂ h₃ h₄) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u1, succ u2} R S g f) (h₂ : Function.RightInverse.{succ u1, succ u2} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u2} S (f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) (f x) (f y))) (h₄ : forall (x : R) (y : R), Eq.{succ u2} S (f (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) (f x) (f y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄)) (RingEquiv.mk.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 g f (RingEquiv.left_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.right_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_mul'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_add'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))))
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434))
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2470))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_mk RingEquiv.symm_mkₓ'. -/
 @[simp]
 theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
@@ -896,7 +896,7 @@ in higher generality -/
 lean 3 declaration is
   forall {R : Type.{u1}} [_inst_1 : NonAssocSemiring.{u1} R], Eq.{succ u1} (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (HasLiftT.mk.{succ u1, succ u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (CoeTCₓ.coe.{succ u1, succ u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (MonoidHom.hasCoeT.{u1, u1, u1} R R (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (RingHomClass.toMonoidHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquivClass.toRingHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquiv.ringEquivClass.{u1, u1} R R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))))))) (RingEquiv.refl.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (RingHom.{u1, u1} R R _inst_1 _inst_1) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (HasLiftT.mk.{succ u1, succ u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (CoeTCₓ.coe.{succ u1, succ u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (MonoidHom.hasCoeT.{u1, u1, u1} R R (RingHom.{u1, u1} R R _inst_1 _inst_1) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (RingHomClass.toMonoidHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) R R _inst_1 _inst_1 (RingHom.ringHomClass.{u1, u1} R R _inst_1 _inst_1))))) (RingHom.id.{u1} R _inst_1))
 but is expected to have type
-  forall {R : Type.{u1}} [_inst_1 : NonAssocSemiring.{u1} R], Eq.{succ u1} (MonoidHom.{u1, u1} R R (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1))) (MonoidHomClass.toMonoidHom.{u1, u1, u1} R R (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (RingHomClass.toMonoidHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquivClass.toRingHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquiv.instRingEquivClassRingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))))) (RingEquiv.refl.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) (MonoidHomClass.toMonoidHom.{u1, u1, u1} R R (RingHom.{u1, u1} R R _inst_1 _inst_1) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (MulZeroOneClass.toMulOneClass.{u1} R (NonAssocSemiring.toMulZeroOneClass.{u1} R _inst_1)) (RingHomClass.toMonoidHomClass.{u1, u1, u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) R R _inst_1 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u1} R R _inst_1 _inst_1)) (RingHom.id.{u1} R _inst_1))
+  forall {R : Type.{u1}} [_inst_1 : NonAssocSemiring.{u1} R], Eq.{succ u1} (RingHom.{u1, u1} R R _inst_1 _inst_1) (RingHomClass.toRingHom.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquivClass.toRingHomClass.{u1, u1, u1} (RingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)))) R R _inst_1 _inst_1 (RingEquiv.instRingEquivClassRingEquiv.{u1, u1} R R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) (RingEquiv.refl.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1)) (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))))) (RingHom.id.{u1} R _inst_1)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_ring_hom_refl RingEquiv.coe_ringHom_reflₓ'. -/
 @[simp]
 theorem coe_ringHom_refl : (RingEquiv.refl R : R →* R) = RingHom.id R :=
Diff
@@ -468,7 +468,7 @@ theorem mk_coe' (e : R ≃+* S) (f h₁ h₂ h₃ h₄) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u1, succ u2} R S g f) (h₂ : Function.RightInverse.{succ u1, succ u2} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u2} S (f (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R _inst_1) x y)) (HMul.hMul.{u2, u2, u2} S S S (instHMul.{u2} S _inst_3) (f x) (f y))) (h₄ : forall (x : R) (y : R), Eq.{succ u2} S (f (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_2) x y)) (HAdd.hAdd.{u2, u2, u2} S S S (instHAdd.{u2} S _inst_4) (f x) (f y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2) (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄)) (RingEquiv.mk.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 g f (RingEquiv.left_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.right_inv.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_mul'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))) (RingEquiv.map_add'.{u2, u1} S R _inst_3 _inst_4 _inst_1 _inst_2 (RingEquiv.symm.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4 f g h₁ h₂ h₃ h₄))))
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2472 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2472)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2472))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2472) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2472))
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : Mul.{u2} R] [_inst_2 : Mul.{u1} S] [_inst_3 : Add.{u2} R] [_inst_4 : Add.{u1} S] (f : R -> S) (g : S -> R) (h₁ : Function.LeftInverse.{succ u2, succ u1} R S g f) (h₂ : Function.RightInverse.{succ u2, succ u1} R S g f) (h₃ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R _inst_1) x y)) (HMul.hMul.{u1, u1, u1} S S S (instHMul.{u1} S _inst_2) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))) (h₄ : forall (x : R) (y : R), Eq.{succ u1} S (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) (HAdd.hAdd.{u2, u2, u2} R R R (instHAdd.{u2} R _inst_3) x y)) (HAdd.hAdd.{u1, u1, u1} S S S (instHAdd.{u1} S _inst_4) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) x) (Equiv.toFun.{succ u2, succ u1} R S (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) y))), Eq.{max (succ u2) (succ u1)} (RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3) (RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄)) (let src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434 : RingEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 := RingEquiv.symm.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (RingEquiv.mk.{u2, u1} R S _inst_1 _inst_2 _inst_3 _inst_4 (Equiv.mk.{succ u2, succ u1} R S f g h₁ h₂) h₃ h₄); RingEquiv.mk.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 (Equiv.mk.{succ u1, succ u2} S R g f (Equiv.left_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434)) (Equiv.right_inv.{succ u1, succ u2} S R (RingEquiv.toEquiv.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434))) (RingEquiv.map_mul'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434) (RingEquiv.map_add'.{u1, u2} S R _inst_2 _inst_1 _inst_4 _inst_3 src._@.Mathlib.Algebra.Ring.Equiv._hyg.2434))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_mk RingEquiv.symm_mkₓ'. -/
 @[simp]
 theorem symm_mk (f : R → S) (g h₁ h₂ h₃ h₄) :
@@ -734,7 +734,7 @@ theorem map_ne_zero_iff : f x ≠ 0 ↔ x ≠ 0 :=
 lean 3 declaration is
   forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)) -> (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
 but is expected to have type
-  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (FunLike.coe.{succ u1, succ u2, succ u3} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3)) f)) -> (RingEquiv.{u2, u3} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
+  forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F), (Function.Bijective.{succ u2, succ u3} R S (FunLike.coe.{succ u1, succ u2, succ u3} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u1, u2, u3} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3)) f)) -> (RingEquiv.{u2, u3} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u3} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)))
 Case conversion may be inaccurate. Consider using '#align ring_equiv.of_bijective RingEquiv.ofBijectiveₓ'. -/
 /-- Produce a ring isomorphism from a bijective ring homomorphism. -/
 noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
@@ -748,7 +748,7 @@ noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Functi
 lean 3 declaration is
   forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)), Eq.{max (succ u2) (succ u3)} ((fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf)) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)
 but is expected to have type
-  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)), Eq.{max (succ u2) (succ u1)} (forall (a : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf)) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)
+  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)), Eq.{max (succ u2) (succ u1)} (forall (a : R), (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf)) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_of_bijective RingEquiv.coe_ofBijectiveₓ'. -/
 @[simp]
 theorem coe_ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
@@ -760,7 +760,7 @@ theorem coe_ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bij
 lean 3 declaration is
   forall {F : Type.{u1}} {R : Type.{u2}} {S : Type.{u3}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u3} S] [_inst_3 : NonUnitalRingHomClass.{u1, u2, u3} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u3} R S (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f)) (x : R), Eq.{succ u3} S (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (fun (_x : RingEquiv.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u2, u3} R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (Distrib.toHasAdd.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2))) (RingEquiv.ofBijective.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3 f hf) x) (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => R -> S) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F R (fun (_x : R) => S) (MulHomClass.toFunLike.{u1, u2, u3} F R S (Distrib.toHasMul.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toHasMul.{u3} S (NonUnitalNonAssocSemiring.toDistrib.{u3} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{u1, u2, u3} F R S _inst_1 _inst_2 _inst_3))) f x)
 but is expected to have type
-  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)) (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf) x) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f x)
+  forall {F : Type.{u3}} {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] [_inst_3 : NonUnitalRingHomClass.{u3, u2, u1} F R S _inst_1 _inst_2] (f : F) (hf : Function.Bijective.{succ u2, succ u1} R S (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f)) (x : R), Eq.{succ u1} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) x) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) (RingEquiv.ofBijective.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3 f hf) x) (FunLike.coe.{succ u3, succ u2, succ u1} F R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{u3, u2, u1} F R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{u3, u2, u1} F R S _inst_1 _inst_2 _inst_3)) f x)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.of_bijective_apply RingEquiv.ofBijective_applyₓ'. -/
 theorem ofBijective_apply [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f)
     (x : R) : ofBijective f hf x = f x :=
@@ -1062,7 +1062,7 @@ theorem toNonUnitalRingHom_eq_coe (f : R ≃+* S) : f.toNonUnitalRingHom = ↑f
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (NonUnitalRingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) f)
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) f)
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (NonUnitalRingHomClass.toNonUnitalRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquivClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))))))) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_non_unital_ring_hom RingEquiv.coe_toNonUnitalRingHomₓ'. -/
 @[simp, norm_cast]
 theorem coe_toNonUnitalRingHom (f : R ≃+* S) : ⇑(f : R →ₙ+* S) = f :=
@@ -1091,7 +1091,7 @@ theorem toNonUnitalRingHom_refl : (RingEquiv.refl R).toNonUnitalRingHom = NonUni
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (y : S), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (NonUnitalRingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e)) y)) y
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) y
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) y)) y
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_applyₓ'. -/
 @[simp]
 theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
@@ -1103,7 +1103,7 @@ theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonUnitalNonAssocSemiring.{u1} R] [_inst_2 : NonUnitalNonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2))) (x : R), Eq.{succ u1} R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : NonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (NonUnitalRingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toNonUnitalRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R _inst_1)) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S _inst_2)) e)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : NonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (NonUnitalRingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toNonUnitalRingHom.{u1, u2} R S _inst_1 _inst_2 e) x)) x
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonUnitalNonAssocSemiring.{u2} R] [_inst_2 : NonUnitalNonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (NonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1))) (RingEquiv.toNonUnitalRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R _inst_1)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S _inst_2)) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R _inst_1) (NonUnitalNonAssocSemiring.toMul.{u1} S _inst_2) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (NonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (NonUnitalRingHom.instNonUnitalRingHomClassNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2))) (RingEquiv.toNonUnitalRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_applyₓ'. -/
 @[simp]
 theorem symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply (e : R ≃+* S) :
@@ -1202,7 +1202,7 @@ theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (f : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))), Eq.{max (succ u1) (succ u2)} (R -> S) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) ((fun (a : Sort.{max (succ u1) (succ u2)}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{max (succ u1) (succ u2), max (succ u1) (succ u2)} a b] => self.0) (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (HasLiftT.mk.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (CoeTCₓ.coe.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (RingHom.{u1, u2} R S _inst_1 _inst_2) (RingHom.hasCoeT.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u1 u2, u1, u2} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.ringEquivClass.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))))))) f)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (fun (_x : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) => R -> S) (RingEquiv.hasCoeToFun.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) f)
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))))))) f)
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (f : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : R), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingHomClass.toRingHom.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquivClass.toRingHomClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S _inst_1 _inst_2 (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))))) f)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R (fun (_x : R) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : R) => S) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (EquivLike.toEmbeddingLike.{max (succ u2) (succ u1), succ u2, succ u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (MulEquivClass.toEquivLike.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (RingEquivClass.toMulEquivClass.{max u2 u1, u2, u1} (RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) (RingEquiv.instRingEquivClassRingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))))))) f)
 Case conversion may be inaccurate. Consider using '#align ring_equiv.coe_to_ring_hom RingEquiv.coe_toRingHomₓ'. -/
 @[simp, norm_cast]
 theorem coe_toRingHom (f : R ≃+* S) : ⇑(f : R →+* S) = f :=
@@ -1313,7 +1313,7 @@ theorem toAddMonoidHom_refl : (RingEquiv.refl R).toAddMonoidHom = AddMonoidHom.i
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (y : S), Eq.{succ u2} S (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : RingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (RingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) y)) y
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) y
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (y : S), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (a : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) a) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) y)) y
 Case conversion may be inaccurate. Consider using '#align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_applyₓ'. -/
 @[simp]
 theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
@@ -1325,7 +1325,7 @@ theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : NonAssocSemiring.{u1} R] [_inst_2 : NonAssocSemiring.{u2} S] (e : RingEquiv.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2)))) (x : R), Eq.{succ u1} R (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (RingHom.{u2, u1} S R _inst_2 _inst_1) (fun (_x : RingHom.{u2, u1} S R _inst_2 _inst_1) => S -> R) (RingHom.hasCoeToFun.{u2, u1} S R _inst_2 _inst_1) (RingEquiv.toRingHom.{u2, u1} S R _inst_2 _inst_1 (RingEquiv.symm.{u1, u2} R S (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R _inst_1))) (Distrib.toHasMul.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) (Distrib.toHasAdd.{u2} S (NonUnitalNonAssocSemiring.toDistrib.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S _inst_2))) e)) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R S _inst_1 _inst_2) (fun (_x : RingHom.{u1, u2} R S _inst_1 _inst_2) => R -> S) (RingHom.hasCoeToFun.{u1, u2} R S _inst_1 _inst_2) (RingEquiv.toRingHom.{u1, u2} R S _inst_1 _inst_2 e) x)) x
 but is expected to have type
-  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
+  forall {R : Type.{u2}} {S : Type.{u1}} [_inst_1 : NonAssocSemiring.{u2} R] [_inst_2 : NonAssocSemiring.{u1} S] (e : RingEquiv.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)))) (x : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (a : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) a) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R _inst_2 _inst_1) S R _inst_2 _inst_1 (RingHom.instRingHomClassRingHom.{u1, u2} S R _inst_2 _inst_1)))) (RingEquiv.toRingHom.{u1, u2} S R _inst_2 _inst_1 (RingEquiv.symm.{u2, u1} R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1))) (Distrib.toAdd.{u1} S (NonUnitalNonAssocSemiring.toDistrib.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2))) e)) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => S) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1)) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2)) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R _inst_1) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S _inst_2) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} R S _inst_1 _inst_2) R S _inst_1 _inst_2 (RingHom.instRingHomClassRingHom.{u2, u1} R S _inst_1 _inst_2)))) (RingEquiv.toRingHom.{u2, u1} R S _inst_1 _inst_2 e) x)) x
 Case conversion may be inaccurate. Consider using '#align ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply RingEquiv.symm_toRingHom_apply_toRingHom_applyₓ'. -/
 @[simp]
 theorem symm_toRingHom_apply_toRingHom_apply (e : R ≃+* S) :
Diff
@@ -396,16 +396,16 @@ protected def symm (e : R ≃+* S) : S ≃+* R :=
   { e.toMulEquiv.symm, e.toAddEquiv.symm with }
 #align ring_equiv.symm RingEquiv.symm
 
-/- warning: ring_equiv.simps.symm_apply -> RingEquiv.Simps.symmApply is a dubious translation:
+/- warning: ring_equiv.simps.symm_apply -> RingEquiv.Simps.symm_apply is a dubious translation:
 lean 3 declaration is
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Add.{u1} R] [_inst_3 : Mul.{u2} S] [_inst_4 : Add.{u2} S], (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) -> S -> R
 but is expected to have type
   forall {R : Type.{u1}} {S : Type.{u2}} [_inst_1 : Mul.{u1} R] [_inst_2 : Mul.{u2} S] [_inst_3 : Add.{u1} R] [_inst_4 : Add.{u2} S], (RingEquiv.{u1, u2} R S _inst_1 _inst_2 _inst_3 _inst_4) -> S -> R
-Case conversion may be inaccurate. Consider using '#align ring_equiv.simps.symm_apply RingEquiv.Simps.symmApplyₓ'. -/
+Case conversion may be inaccurate. Consider using '#align ring_equiv.simps.symm_apply RingEquiv.Simps.symm_applyₓ'. -/
 /-- See Note [custom simps projection] -/
-def Simps.symmApply (e : R ≃+* S) : S → R :=
+def Simps.symm_apply (e : R ≃+* S) : S → R :=
   e.symm
-#align ring_equiv.simps.symm_apply RingEquiv.Simps.symmApply
+#align ring_equiv.simps.symm_apply RingEquiv.Simps.symm_apply
 
 initialize_simps_projections RingEquiv (toFun → apply, invFun → symm_apply)
 

Changes in mathlib4

mathlib3
mathlib4
style: replace '.-/' by '. -/' (#11938)

Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.

Diff
@@ -846,7 +846,7 @@ end RingEquiv
 
 namespace MulEquiv
 
-/-- Gives a `RingEquiv` from an element of a `MulEquivClass` preserving addition.-/
+/-- Gives a `RingEquiv` from an element of a `MulEquivClass` preserving addition. -/
 def toRingEquiv {R S F : Type*} [Add R] [Add S] [Mul R] [Mul S] [EquivLike F R S]
     [MulEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x + y) = f x + f y) : R ≃+* S :=
@@ -857,7 +857,7 @@ end MulEquiv
 
 namespace AddEquiv
 
-/-- Gives a `RingEquiv` from an element of an `AddEquivClass` preserving addition.-/
+/-- Gives a `RingEquiv` from an element of an `AddEquivClass` preserving addition. -/
 def toRingEquiv {R S F : Type*} [Add R] [Add S] [Mul R] [Mul S] [EquivLike F R S]
     [AddEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x * y) = f x * f y) : R ≃+* S :=
chore: remove mathport name: <expression> lines (#11928)

Quoting [@digama0](https://github.com/digama0):

These were actually never meant to go in the file, they are basically debugging information and only useful on significantly broken mathport files. You can safely remove all of them.

Diff
@@ -63,7 +63,6 @@ algebraic structure. -/
 structure RingEquiv (R S : Type*) [Mul R] [Mul S] [Add R] [Add S] extends R ≃ S, R ≃* S, R ≃+ S
 #align ring_equiv RingEquiv
 
--- mathport name: «expr ≃+* »*
 /-- Notation for `RingEquiv`. -/
 infixl:25 " ≃+* " => RingEquiv
 
chore: don't import Field in Algebra.Ring.Equiv (#11881)

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

Diff
@@ -3,7 +3,6 @@ Copyright (c) 2018 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 -/
-import Mathlib.Algebra.Field.IsField
 import Mathlib.Algebra.Group.Opposite
 import Mathlib.Algebra.Group.Units.Equiv
 import Mathlib.Algebra.GroupWithZero.InjSurj
@@ -901,15 +900,8 @@ protected theorem isDomain {A : Type*} (B : Type*) [Semiring A] [Semiring B] [Is
     exists_pair_ne := ⟨e.symm 0, e.symm 1, e.symm.injective.ne zero_ne_one⟩ }
 #noalign ring_equiv.is_domain
 
-protected theorem isField {A : Type*} (B : Type*) [Semiring A] [Semiring B] (hB : IsField B)
-    (e : A ≃* B) : IsField A where
-  exists_pair_ne := have ⟨x, y, h⟩ := hB.exists_pair_ne; ⟨e.symm x, e.symm y, e.symm.injective.ne h⟩
-  mul_comm := fun x y => e.injective <| by rw [map_mul, map_mul, hB.mul_comm]
-  mul_inv_cancel := fun h => by
-    obtain ⟨a', he⟩ := hB.mul_inv_cancel ((e.injective.ne h).trans_eq <| map_zero e)
-    exact ⟨e.symm a', e.injective <| by rw [map_mul, map_one, e.apply_symm_apply, he]⟩
-
 end MulEquiv
 
 -- guard against import creep
+assert_not_exists Field
 assert_not_exists Fintype
chore: classify new theorem / theorem porting notes (#11432)

Classifies by adding issue number #10756 to porting notes claiming anything equivalent to:

  • "added theorem"
  • "added theorems"
  • "new theorem"
  • "new theorems"
  • "added lemma"
  • "new lemma"
  • "new lemmas"
Diff
@@ -285,7 +285,7 @@ theorem symm_symm (e : R ≃+* S) : e.symm.symm = e :=
   ext fun _ => rfl
 #align ring_equiv.symm_symm RingEquiv.symm_symm
 
--- Porting note: new theorem
+-- Porting note (#10756): new theorem
 @[simp]
 theorem symm_refl : (RingEquiv.refl R).symm = RingEquiv.refl R :=
   rfl
feat(Algebra/Ring/Equiv): add lemma isUnit_iff (#11237)

Add one lemma stating that an element is a unit if and only if its image through a ring equivalence is a unit.

Diff
@@ -4,8 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 -/
 import Mathlib.Algebra.Field.IsField
-import Mathlib.Algebra.Group.Equiv.Basic
 import Mathlib.Algebra.Group.Opposite
+import Mathlib.Algebra.Group.Units.Equiv
 import Mathlib.Algebra.GroupWithZero.InjSurj
 import Mathlib.Algebra.Ring.Hom.Defs
 import Mathlib.Logic.Equiv.Set
@@ -831,16 +831,19 @@ def ofHomInv {R S F G : Type*} [NonAssocSemiring R] [NonAssocSemiring S]
 
 end SemiringHom
 
-section GroupPower
-
 variable [Semiring R] [Semiring S]
 
+section GroupPower
+
 protected theorem map_pow (f : R ≃+* S) (a) : ∀ n : ℕ, f (a ^ n) = f a ^ n :=
   map_pow f a
 #align ring_equiv.map_pow RingEquiv.map_pow
 
 end GroupPower
 
+protected theorem isUnit_iff (f : R ≃+* S) {a} : IsUnit (f a) ↔ IsUnit a :=
+  MulEquiv.map_isUnit_iff f
+
 end RingEquiv
 
 namespace MulEquiv
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
@@ -285,7 +285,7 @@ theorem symm_symm (e : R ≃+* S) : e.symm.symm = e :=
   ext fun _ => rfl
 #align ring_equiv.symm_symm RingEquiv.symm_symm
 
---Porting note: new theorem
+-- Porting note: new theorem
 @[simp]
 theorem symm_refl : (RingEquiv.refl R).symm = RingEquiv.refl R :=
   rfl
chore: classify simp can prove porting notes (#11120)

Classifies by adding issue number #10618 to porting notes claiming anything semantically equivalent to

  • "simp can prove this"
  • "simp can simplify this`"
  • "was @[simp], now can be proved by simp"
  • "was @[simp], but simp can prove it"
  • "removed simp attribute as the equality can already be obtained by simp"
  • "simp can already prove this"
  • "simp already proves this"
  • "simp can prove these"
Diff
@@ -758,13 +758,13 @@ theorem toAddMonoidHom_refl : (RingEquiv.refl R).toAddMonoidHom = AddMonoidHom.i
   rfl
 #align ring_equiv.to_add_monoid_hom_refl RingEquiv.toAddMonoidHom_refl
 
--- Porting note: Now other `simp` can do this, so removed `simp` attribute
+-- Porting note (#10618): Now other `simp` can do this, so removed `simp` attribute
 theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
     ∀ y : S, e.toRingHom (e.symm.toRingHom y) = y :=
   e.toEquiv.apply_symm_apply
 #align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_apply
 
--- Porting note: Now other `simp` can do this, so removed `simp` attribute
+-- Porting note (#10618): Now other `simp` can do this, so removed `simp` attribute
 theorem symm_toRingHom_apply_toRingHom_apply (e : R ≃+* S) :
     ∀ x : R, e.symm.toRingHom (e.toRingHom x) = x :=
   Equiv.symm_apply_apply e.toEquiv
@@ -776,14 +776,14 @@ theorem toRingHom_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
   rfl
 #align ring_equiv.to_ring_hom_trans RingEquiv.toRingHom_trans
 
--- Porting note: Now other `simp` can do this, so removed `simp` attribute
+-- Porting note (#10618): Now other `simp` can do this, so removed `simp` attribute
 theorem toRingHom_comp_symm_toRingHom (e : R ≃+* S) :
     e.toRingHom.comp e.symm.toRingHom = RingHom.id _ := by
   ext
   simp
 #align ring_equiv.to_ring_hom_comp_symm_to_ring_hom RingEquiv.toRingHom_comp_symm_toRingHom
 
--- Porting note: Now other `simp` can do this, so removed `simp` attribute
+-- Porting note (#10618): Now other `simp` can do this, so removed `simp` attribute
 theorem symm_toRingHom_comp_toRingHom (e : R ≃+* S) :
     e.symm.toRingHom.comp e.toRingHom = RingHom.id _ := by
   ext
style: reduce spacing variation in "porting note" comments (#10886)

In this pull request, I have systematically eliminated the leading whitespace preceding the colon (:) within all unlabelled or unclassified porting notes. This adjustment facilitates a more efficient review process for the remaining notes by ensuring no entries are overlooked due to formatting inconsistencies.

Diff
@@ -758,13 +758,13 @@ theorem toAddMonoidHom_refl : (RingEquiv.refl R).toAddMonoidHom = AddMonoidHom.i
   rfl
 #align ring_equiv.to_add_monoid_hom_refl RingEquiv.toAddMonoidHom_refl
 
--- Porting note : Now other `simp` can do this, so removed `simp` attribute
+-- Porting note: Now other `simp` can do this, so removed `simp` attribute
 theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
     ∀ y : S, e.toRingHom (e.symm.toRingHom y) = y :=
   e.toEquiv.apply_symm_apply
 #align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_apply
 
--- Porting note : Now other `simp` can do this, so removed `simp` attribute
+-- Porting note: Now other `simp` can do this, so removed `simp` attribute
 theorem symm_toRingHom_apply_toRingHom_apply (e : R ≃+* S) :
     ∀ x : R, e.symm.toRingHom (e.toRingHom x) = x :=
   Equiv.symm_apply_apply e.toEquiv
@@ -776,14 +776,14 @@ theorem toRingHom_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
   rfl
 #align ring_equiv.to_ring_hom_trans RingEquiv.toRingHom_trans
 
--- Porting note : Now other `simp` can do this, so removed `simp` attribute
+-- Porting note: Now other `simp` can do this, so removed `simp` attribute
 theorem toRingHom_comp_symm_toRingHom (e : R ≃+* S) :
     e.toRingHom.comp e.symm.toRingHom = RingHom.id _ := by
   ext
   simp
 #align ring_equiv.to_ring_hom_comp_symm_to_ring_hom RingEquiv.toRingHom_comp_symm_toRingHom
 
--- Porting note : Now other `simp` can do this, so removed `simp` attribute
+-- Porting note: Now other `simp` can do this, so removed `simp` attribute
 theorem symm_toRingHom_comp_toRingHom (e : R ≃+* S) :
     e.symm.toRingHom.comp e.toRingHom = RingHom.id _ := by
   ext
chore: Remove Init.CCLemmas (#10696)

Those lemmas were weird and unused, except the last few about transitivity of = and , which I moved to Logic.Basic

Diff
@@ -3,7 +3,6 @@ Copyright (c) 2018 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 -/
-import Mathlib.Init.CCLemmas
 import Mathlib.Algebra.Field.IsField
 import Mathlib.Algebra.Group.Equiv.Basic
 import Mathlib.Algebra.Group.Opposite
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
@@ -604,7 +604,7 @@ section Ring
 
 variable [NonAssocRing R] [NonAssocRing S] (f : R ≃+* S) (x y : R)
 
--- Porting note: `simp` can now prove that, so we remove the `@[simp]` tag
+-- Porting note (#10618): `simp` can now prove that, so we remove the `@[simp]` tag
 theorem map_neg_one : f (-1) = -1 :=
   f.map_one ▸ f.map_neg 1
 #align ring_equiv.map_neg_one RingEquiv.map_neg_one
refactor(Data/FunLike): use unbundled inheritance from FunLike (#8386)

The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike is EquivLike, since that has a custom coe_injective' field that is easier to implement. All other classes should take FunLike or EquivLike as a parameter.

Zulip thread

Important changes

Previously, morphism classes would be Type-valued and extend FunLike:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

After this PR, they should be Prop-valued and take FunLike as a parameter:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  [FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

(Note that A B stay marked as outParam even though they are not purely required to be so due to the FunLike parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam is slightly faster.)

Similarly, MyEquivClass should take EquivLike as a parameter.

As a result, every mention of [MyHomClass F A B] should become [FunLike F A B] [MyHomClass F A B].

Remaining issues

Slower (failing) search

While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul is more expensive. This is due to suboptimal processing of arguments. For example:

variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)

theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y

example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _

Before this PR, applying map_mul f gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Since M and N are out_params, [MulHomClass F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found.

After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Now [FunLike F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found, before trying MulHomClass F M N which fails. Since the Mul hierarchy is very big, this can be slow to fail, especially when there is no such Mul instance.

A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N] because MulHomClass fails or succeeds much faster than the others.

As a consequence, the simpNF linter is much slower since by design it tries and fails to apply many map_ lemmas. The same issue occurs a few times in existing calls to simp [map_mul], where map_mul is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.

simp not firing sometimes

This affects map_smulₛₗ and related definitions. For simp lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw can find every argument to map_smulₛₗ successfully but simp can't: leanprover/lean4#3701.

Missing instances due to unification failing

Especially in the category theory library, we might sometimes have a type A which is also accessible as a synonym (Bundled A hA).1. Instance synthesis doesn't always work if we have f : A →* B but x * y : (Bundled A hA).1 or vice versa. This seems to be mostly fixed by keeping A B as outParams in MulHomClass F A B. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1 instead of using the syntax in the discrimination tree.)

Workaround for issues

The timeouts can be worked around for now by specifying which map_mul we mean, either as map_mul f for some explicit f, or as e.g. MonoidHomClass.map_mul.

map_smulₛₗ not firing as simp lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ a simp lemma instead of the generic map_smulₛₗ. Writing simp [map_smulₛₗ _] also works.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -83,26 +83,26 @@ add_decl_doc RingEquiv.toMulEquiv
 
 /-- `RingEquivClass F R S` states that `F` is a type of ring structure preserving equivalences.
 You should extend this class when you extend `RingEquiv`. -/
-class RingEquivClass (F : Type*) (R S : outParam (Type*)) [Mul R] [Add R] [Mul S] [Add S] extends
-  MulEquivClass F R S where
+class RingEquivClass (F R S : Type*) [Mul R] [Add R] [Mul S] [Add S] [EquivLike F R S]
+  extends MulEquivClass F R S : Prop where
   /-- By definition, a ring isomorphism preserves the additive structure. -/
   map_add : ∀ (f : F) (a b), f (a + b) = f a + f b
 #align ring_equiv_class RingEquivClass
 
 namespace RingEquivClass
 
+variable [EquivLike F R S]
+
 -- See note [lower instance priority]
 instance (priority := 100) toAddEquivClass [Mul R] [Add R]
     [Mul S] [Add S] [h : RingEquivClass F R S] : AddEquivClass F R S :=
-  { h with coe := h.coe }
+  { h with }
 #align ring_equiv_class.to_add_equiv_class RingEquivClass.toAddEquivClass
 
 -- See note [lower instance priority]
 instance (priority := 100) toRingHomClass [NonAssocSemiring R] [NonAssocSemiring S]
     [h : RingEquivClass F R S] : RingHomClass F R S :=
   { h with
-    coe := h.coe
-    coe_injective' := DFunLike.coe_injective
     map_zero := map_zero
     map_one := map_one }
 #align ring_equiv_class.to_ring_hom_class RingEquivClass.toRingHomClass
@@ -111,15 +111,13 @@ instance (priority := 100) toRingHomClass [NonAssocSemiring R] [NonAssocSemiring
 instance (priority := 100) toNonUnitalRingHomClass [NonUnitalNonAssocSemiring R]
     [NonUnitalNonAssocSemiring S] [h : RingEquivClass F R S] : NonUnitalRingHomClass F R S :=
   { h with
-    coe := h.coe
-    coe_injective' := DFunLike.coe_injective
     map_zero := map_zero }
 #align ring_equiv_class.to_non_unital_ring_hom_class RingEquivClass.toNonUnitalRingHomClass
 
 /-- Turn an element of a type `F` satisfying `RingEquivClass F α β` into an actual
 `RingEquiv`. This is declared as the default coercion from `F` to `α ≃+* β`. -/
 @[coe]
-def toRingEquiv [Mul α] [Add α] [Mul β] [Add β] [RingEquivClass F α β] (f : F) :
+def toRingEquiv [Mul α] [Add α] [Mul β] [Add β] [EquivLike F α β] [RingEquivClass F α β] (f : F) :
     α ≃+* β :=
   { (f : α ≃* β), (f : α ≃+ β) with }
 
@@ -127,7 +125,8 @@ end RingEquivClass
 
 /-- Any type satisfying `RingEquivClass` can be cast into `RingEquiv` via
 `RingEquivClass.toRingEquiv`. -/
-instance [Mul α] [Add α] [Mul β] [Add β] [RingEquivClass F α β] : CoeTC F (α ≃+* β) :=
+instance [Mul α] [Add α] [Mul β] [Add β] [EquivLike F α β] [RingEquivClass F α β] :
+    CoeTC F (α ≃+* β) :=
   ⟨RingEquivClass.toRingEquiv⟩
 
 namespace RingEquiv
@@ -136,7 +135,7 @@ section Basic
 
 variable [Mul R] [Mul S] [Add R] [Add S] [Mul S'] [Add S']
 
-instance : RingEquivClass (R ≃+* S) R S where
+instance : EquivLike (R ≃+* S) R S where
   coe f := f.toFun
   inv f := f.invFun
   coe_injective' e f h₁ h₂ := by
@@ -144,11 +143,13 @@ instance : RingEquivClass (R ≃+* S) R S where
     cases f
     congr
     apply Equiv.coe_fn_injective h₁
-  map_add f := f.map_add'
-  map_mul f := f.map_mul'
   left_inv f := f.left_inv
   right_inv f := f.right_inv
 
+instance : RingEquivClass (R ≃+* S) R S where
+  map_add f := f.map_add'
+  map_mul f := f.map_mul'
+
 @[simp]
 theorem toEquiv_eq_coe (f : R ≃+* S) : f.toEquiv = f :=
   rfl
@@ -455,6 +456,8 @@ theorem map_ne_zero_iff : f x ≠ 0 ↔ x ≠ 0 :=
   AddEquivClass.map_ne_zero_iff f
 #align ring_equiv.map_ne_zero_iff RingEquiv.map_ne_zero_iff
 
+variable [FunLike F R S]
+
 /-- Produce a ring isomorphism from a bijective ring homomorphism. -/
 noncomputable def ofBijective [NonUnitalRingHomClass F R S] (f : F) (hf : Function.Bijective f) :
     R ≃+* S :=
@@ -792,6 +795,7 @@ theorem symm_toRingHom_comp_toRingHom (e : R ≃+* S) :
 -/
 @[simps]
 def ofHomInv' {R S F G : Type*} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
+    [FunLike F R S] [FunLike G S R]
     [NonUnitalRingHomClass F R S] [NonUnitalRingHomClass G S R] (hom : F) (inv : G)
     (hom_inv_id : (inv : S →ₙ+* R).comp (hom : R →ₙ+* S) = NonUnitalRingHom.id R)
     (inv_hom_id : (hom : R →ₙ+* S).comp (inv : S →ₙ+* R) = NonUnitalRingHom.id S) :
@@ -810,7 +814,8 @@ def ofHomInv' {R S F G : Type*} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssoc
 Construct an equivalence of rings from unital homomorphisms in both directions, which are inverses.
 -/
 @[simps]
-def ofHomInv {R S F G : Type*} [NonAssocSemiring R] [NonAssocSemiring S] [RingHomClass F R S]
+def ofHomInv {R S F G : Type*} [NonAssocSemiring R] [NonAssocSemiring S]
+    [FunLike F R S] [FunLike G S R] [RingHomClass F R S]
     [RingHomClass G S R] (hom : F) (inv : G)
     (hom_inv_id : (inv : S →+* R).comp (hom : R →+* S) = RingHom.id R)
     (inv_hom_id : (hom : R →+* S).comp (inv : S →+* R) = RingHom.id S) :
@@ -842,7 +847,8 @@ end RingEquiv
 namespace MulEquiv
 
 /-- Gives a `RingEquiv` from an element of a `MulEquivClass` preserving addition.-/
-def toRingEquiv {R S F : Type*} [Add R] [Add S] [Mul R] [Mul S] [MulEquivClass F R S] (f : F)
+def toRingEquiv {R S F : Type*} [Add R] [Add S] [Mul R] [Mul S] [EquivLike F R S]
+    [MulEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x + y) = f x + f y) : R ≃+* S :=
   { (f : R ≃* S).toEquiv, (f : R ≃* S), AddEquiv.mk' (f : R ≃* S).toEquiv H with }
 #align mul_equiv.to_ring_equiv MulEquiv.toRingEquiv
@@ -852,7 +858,8 @@ end MulEquiv
 namespace AddEquiv
 
 /-- Gives a `RingEquiv` from an element of an `AddEquivClass` preserving addition.-/
-def toRingEquiv {R S F : Type*} [Add R] [Add S] [Mul R] [Mul S] [AddEquivClass F R S] (f : F)
+def toRingEquiv {R S F : Type*} [Add R] [Add S] [Mul R] [Mul S] [EquivLike F R S]
+    [AddEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x * y) = f x * f y) : R ≃+* S :=
   { (f : R ≃+ S).toEquiv, (f : R ≃+ S), MulEquiv.mk' (f : R ≃+ S).toEquiv H with }
 #align add_equiv.to_ring_equiv AddEquiv.toRingEquiv
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
@@ -102,7 +102,7 @@ instance (priority := 100) toRingHomClass [NonAssocSemiring R] [NonAssocSemiring
     [h : RingEquivClass F R S] : RingHomClass F R S :=
   { h with
     coe := h.coe
-    coe_injective' := FunLike.coe_injective
+    coe_injective' := DFunLike.coe_injective
     map_zero := map_zero
     map_one := map_one }
 #align ring_equiv_class.to_ring_hom_class RingEquivClass.toRingHomClass
@@ -112,7 +112,7 @@ instance (priority := 100) toNonUnitalRingHomClass [NonUnitalNonAssocSemiring R]
     [NonUnitalNonAssocSemiring S] [h : RingEquivClass F R S] : NonUnitalRingHomClass F R S :=
   { h with
     coe := h.coe
-    coe_injective' := FunLike.coe_injective
+    coe_injective' := DFunLike.coe_injective
     map_zero := map_zero }
 #align ring_equiv_class.to_non_unital_ring_hom_class RingEquivClass.toNonUnitalRingHomClass
 
@@ -176,7 +176,7 @@ protected theorem map_add (e : R ≃+* S) (x y : R) : e (x + y) = e x + e y :=
     same underlying function. -/
 @[ext]
 theorem ext {f g : R ≃+* S} (h : ∀ x, f x = g x) : f = g :=
-  FunLike.ext f g h
+  DFunLike.ext f g h
 #align ring_equiv.ext RingEquiv.ext
 
 @[simp]
@@ -193,15 +193,15 @@ theorem mk_coe (e : R ≃+* S) (e' h₁ h₂ h₃ h₄) : (⟨⟨e, e', h₁, h
 #align ring_equiv.mk_coe RingEquiv.mk_coe
 
 protected theorem congr_arg {f : R ≃+* S} {x x' : R} : x = x' → f x = f x' :=
-  FunLike.congr_arg f
+  DFunLike.congr_arg f
 #align ring_equiv.congr_arg RingEquiv.congr_arg
 
 protected theorem congr_fun {f g : R ≃+* S} (h : f = g) (x : R) : f x = g x :=
-  FunLike.congr_fun h x
+  DFunLike.congr_fun h x
 #align ring_equiv.congr_fun RingEquiv.congr_fun
 
 protected theorem ext_iff {f g : R ≃+* S} : f = g ↔ ∀ x, f x = g x :=
-  FunLike.ext_iff
+  DFunLike.ext_iff
 #align ring_equiv.ext_iff RingEquiv.ext_iff
 
 @[simp]
@@ -798,8 +798,8 @@ def ofHomInv' {R S F G : Type*} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssoc
     R ≃+* S where
   toFun := hom
   invFun := inv
-  left_inv := FunLike.congr_fun hom_inv_id
-  right_inv := FunLike.congr_fun inv_hom_id
+  left_inv := DFunLike.congr_fun hom_inv_id
+  right_inv := DFunLike.congr_fun inv_hom_id
   map_mul' := map_mul hom
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv' RingEquiv.ofHomInv'
@@ -817,8 +817,8 @@ def ofHomInv {R S F G : Type*} [NonAssocSemiring R] [NonAssocSemiring S] [RingHo
     R ≃+* S where
   toFun := hom
   invFun := inv
-  left_inv := FunLike.congr_fun hom_inv_id
-  right_inv := FunLike.congr_fun inv_hom_id
+  left_inv := DFunLike.congr_fun hom_inv_id
+  right_inv := DFunLike.congr_fun inv_hom_id
   map_mul' := map_mul hom
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv RingEquiv.ofHomInv
feat(/Equiv/): Add symm_bijective lemmas next to symm_symms (#8444)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: lines <34025592+linesthatinterlace@users.noreply.github.com>

Diff
@@ -295,8 +295,8 @@ theorem coe_toEquiv_symm (e : R ≃+* S) : (e.symm : S ≃ R) = (e : R ≃ S).sy
   rfl
 #align ring_equiv.coe_to_equiv_symm RingEquiv.coe_toEquiv_symm
 
-theorem symm_bijective : Function.Bijective (RingEquiv.symm : R ≃+* S → S ≃+* R) :=
-  Equiv.bijective ⟨RingEquiv.symm, RingEquiv.symm, symm_symm, symm_symm⟩
+theorem symm_bijective : Function.Bijective (RingEquiv.symm : (R ≃+* S) → S ≃+* R) :=
+  Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
 #align ring_equiv.symm_bijective RingEquiv.symm_bijective
 
 @[simp]
refactor(Algebra/Hom): transpose Hom and file name (#8095)

I believe the file defining a type of morphisms belongs alongside the file defining the structure this morphism works on. So I would like to reorganize the files in the Mathlib.Algebra.Hom folder so that e.g. Mathlib.Algebra.Hom.Ring becomes Mathlib.Algebra.Ring.Hom and Mathlib.Algebra.Hom.NonUnitalAlg becomes Mathlib.Algebra.Algebra.NonUnitalHom.

While fixing the imports I went ahead and sorted them for good luck.

The full list of changes is: renamed: Mathlib/Algebra/Hom/NonUnitalAlg.lean -> Mathlib/Algebra/Algebra/NonUnitalHom.lean renamed: Mathlib/Algebra/Hom/Aut.lean -> Mathlib/Algebra/Group/Aut.lean renamed: Mathlib/Algebra/Hom/Commute.lean -> Mathlib/Algebra/Group/Commute/Hom.lean renamed: Mathlib/Algebra/Hom/Embedding.lean -> Mathlib/Algebra/Group/Embedding.lean renamed: Mathlib/Algebra/Hom/Equiv/Basic.lean -> Mathlib/Algebra/Group/Equiv/Basic.lean renamed: Mathlib/Algebra/Hom/Equiv/TypeTags.lean -> Mathlib/Algebra/Group/Equiv/TypeTags.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/Basic.lean -> Mathlib/Algebra/Group/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/GroupWithZero.lean -> Mathlib/Algebra/GroupWithZero/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Freiman.lean -> Mathlib/Algebra/Group/Freiman.lean renamed: Mathlib/Algebra/Hom/Group/Basic.lean -> Mathlib/Algebra/Group/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Group/Defs.lean -> Mathlib/Algebra/Group/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/GroupAction.lean -> Mathlib/GroupTheory/GroupAction/Hom.lean renamed: Mathlib/Algebra/Hom/GroupInstances.lean -> Mathlib/Algebra/Group/Hom/Instances.lean renamed: Mathlib/Algebra/Hom/Iterate.lean -> Mathlib/Algebra/GroupPower/IterateHom.lean renamed: Mathlib/Algebra/Hom/Centroid.lean -> Mathlib/Algebra/Ring/CentroidHom.lean renamed: Mathlib/Algebra/Hom/Ring/Basic.lean -> Mathlib/Algebra/Ring/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Ring/Defs.lean -> Mathlib/Algebra/Ring/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/Units.lean -> Mathlib/Algebra/Group/Units/Hom.lean

Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Reorganizing.20.60Mathlib.2EAlgebra.2EHom.60

Diff
@@ -5,12 +5,12 @@ Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 -/
 import Mathlib.Init.CCLemmas
 import Mathlib.Algebra.Field.IsField
+import Mathlib.Algebra.Group.Equiv.Basic
 import Mathlib.Algebra.Group.Opposite
 import Mathlib.Algebra.GroupWithZero.InjSurj
-import Mathlib.Algebra.Hom.Ring.Defs
+import Mathlib.Algebra.Ring.Hom.Defs
 import Mathlib.Logic.Equiv.Set
 import Mathlib.Util.AssertExists
-import Mathlib.Algebra.Hom.Equiv.Basic
 
 #align_import algebra.ring.equiv from "leanprover-community/mathlib"@"00f91228655eecdcd3ac97a7fd8dbcb139fe990a"
 
chore: exactly 4 spaces in subsequent lines for def (#7321)

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

Diff
@@ -120,8 +120,8 @@ instance (priority := 100) toNonUnitalRingHomClass [NonUnitalNonAssocSemiring R]
 `RingEquiv`. This is declared as the default coercion from `F` to `α ≃+* β`. -/
 @[coe]
 def toRingEquiv [Mul α] [Add α] [Mul β] [Add β] [RingEquivClass F α β] (f : F) :
-  α ≃+* β :=
-{ (f : α ≃* β), (f : α ≃+ β) with }
+    α ≃+* β :=
+  { (f : α ≃* β), (f : α ≃+ β) with }
 
 end RingEquivClass
 
chore: make fields of algebraic (iso)morphisms protected (#7150)

Pretty much all these fields are implementation details, and not intended as API. There is no point in open MonoidHom bringing toFun or map_mul' into the environment, as neither are the preferred way to spell those things.

Diff
@@ -144,8 +144,8 @@ instance : RingEquivClass (R ≃+* S) R S where
     cases f
     congr
     apply Equiv.coe_fn_injective h₁
-  map_add := map_add'
-  map_mul := map_mul'
+  map_add f := f.map_add'
+  map_mul f := f.map_mul'
   left_inv f := f.left_inv
   right_inv f := f.right_inv
 
refactor: split Algebra.Hom.Group and Algebra.Hom.Ring (#7094)

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

Diff
@@ -3,9 +3,11 @@ Copyright (c) 2018 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 -/
+import Mathlib.Init.CCLemmas
 import Mathlib.Algebra.Field.IsField
 import Mathlib.Algebra.Group.Opposite
-import Mathlib.Algebra.Hom.Ring
+import Mathlib.Algebra.GroupWithZero.InjSurj
+import Mathlib.Algebra.Hom.Ring.Defs
 import Mathlib.Logic.Equiv.Set
 import Mathlib.Util.AssertExists
 import Mathlib.Algebra.Hom.Equiv.Basic
chore: split out IsField (#6954)

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

Diff
@@ -3,7 +3,7 @@ Copyright (c) 2018 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 -/
-import Mathlib.Algebra.Field.Defs
+import Mathlib.Algebra.Field.IsField
 import Mathlib.Algebra.Group.Opposite
 import Mathlib.Algebra.Hom.Ring
 import Mathlib.Logic.Equiv.Set
feat: generalize algebraic pullback instances (#6536)

Generalizes RingEquiv.noZeroDivisors and RingEquiv.isDomain to MulEquiv

Adds Function.Injective.isLeft/RightCancelMulZero, MulEquiv.toZeroHomClass, and MulEquiv.isField (the last one is useful for #6309)

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

Diff
@@ -3,6 +3,7 @@ Copyright (c) 2018 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 -/
+import Mathlib.Algebra.Field.Defs
 import Mathlib.Algebra.Group.Opposite
 import Mathlib.Algebra.Hom.Ring
 import Mathlib.Logic.Equiv.Set
@@ -870,24 +871,34 @@ theorem symm_trans_self (e : R ≃+* S) : e.symm.trans e = RingEquiv.refl S :=
   ext e.right_inv
 #align ring_equiv.symm_trans_self RingEquiv.symm_trans_self
 
+end RingEquiv
+
+namespace MulEquiv
+
 /-- If two rings are isomorphic, and the second doesn't have zero divisors,
 then so does the first. -/
-protected theorem noZeroDivisors {A : Type*} (B : Type*) [Ring A] [Ring B] [NoZeroDivisors B]
-    (e : A ≃+* B) : NoZeroDivisors A :=
-  { eq_zero_or_eq_zero_of_mul_eq_zero := fun {x y} hxy => by
-      have : e x * e y = 0 := by rw [← e.map_mul, hxy, e.map_zero]
-      simpa using eq_zero_or_eq_zero_of_mul_eq_zero this }
-#align ring_equiv.no_zero_divisors RingEquiv.noZeroDivisors
+protected theorem noZeroDivisors {A : Type*} (B : Type*) [MulZeroClass A] [MulZeroClass B]
+    [NoZeroDivisors B] (e : A ≃* B) : NoZeroDivisors A :=
+  e.injective.noZeroDivisors e (map_zero e) (map_mul e)
+#noalign ring_equiv.no_zero_divisors
 
 /-- If two rings are isomorphic, and the second is a domain, then so is the first. -/
-protected theorem isDomain {A : Type*} (B : Type*) [Ring A] [Ring B] [IsDomain B] (e : A ≃+* B) :
-    IsDomain A := by
-  haveI : Nontrivial A := ⟨⟨e.symm 0, e.symm 1, e.symm.injective.ne zero_ne_one⟩⟩
-  haveI := e.noZeroDivisors B
-  exact NoZeroDivisors.to_isDomain _
-#align ring_equiv.is_domain RingEquiv.isDomain
+protected theorem isDomain {A : Type*} (B : Type*) [Semiring A] [Semiring B] [IsDomain B]
+    (e : A ≃* B) : IsDomain A :=
+  { e.injective.isLeftCancelMulZero e (map_zero e) (map_mul e),
+    e.injective.isRightCancelMulZero e (map_zero e) (map_mul e) with
+    exists_pair_ne := ⟨e.symm 0, e.symm 1, e.symm.injective.ne zero_ne_one⟩ }
+#noalign ring_equiv.is_domain
+
+protected theorem isField {A : Type*} (B : Type*) [Semiring A] [Semiring B] (hB : IsField B)
+    (e : A ≃* B) : IsField A where
+  exists_pair_ne := have ⟨x, y, h⟩ := hB.exists_pair_ne; ⟨e.symm x, e.symm y, e.symm.injective.ne h⟩
+  mul_comm := fun x y => e.injective <| by rw [map_mul, map_mul, hB.mul_comm]
+  mul_inv_cancel := fun h => by
+    obtain ⟨a', he⟩ := hB.mul_inv_cancel ((e.injective.ne h).trans_eq <| map_zero e)
+    exact ⟨e.symm a', e.injective <| by rw [map_mul, map_one, e.apply_symm_apply, he]⟩
 
-end RingEquiv
+end MulEquiv
 
 -- guard against import creep
 assert_not_exists Fintype
feat(Algebra/Algebra/Opposite): A ≃ₐ[R] Aᵐᵒᵖᵐᵒᵖ and (A ≃ₐ[R] Bᵐᵒᵖ) ≃ (Aᵐᵒᵖ ≃ₐ[R] B) (#6525)

This also adds the missing AlgEquiv.equivCongr as a more general version of AlgEquiv.autCongr.

Diff
@@ -402,6 +402,12 @@ protected def unop {α β} [Add α] [Mul α] [Add β] [Mul β] : αᵐᵒᵖ ≃
   RingEquiv.op.symm
 #align ring_equiv.unop RingEquiv.unop
 
+/-- A ring is isomorphic to the opposite of its opposite. -/
+@[simps!]
+def opOp (R : Type*) [Add R] [Mul R] : R ≃+* Rᵐᵒᵖᵐᵒᵖ where
+  __ := MulEquiv.opOp R
+  map_add' _ _ := rfl
+
 section NonUnitalCommSemiring
 
 variable (R) [NonUnitalCommSemiring R]
style: remove trailing whitespace and modify the linter to detect it (#6519)
Diff
@@ -42,18 +42,18 @@ Equiv, MulEquiv, AddEquiv, RingEquiv, MulAut, AddAut, RingAut
 variable {F α β R S S' : Type*}
 
 
-/-- makes a `NonUnitalRingHom` from the bijective inverse of a `NonUnitalRingHom` -/  
+/-- makes a `NonUnitalRingHom` from the bijective inverse of a `NonUnitalRingHom` -/
 @[simps] def NonUnitalRingHom.inverse
     [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
     (f : R →ₙ+* S) (g : S → R)
     (h₁ : Function.LeftInverse g f) (h₂ : Function.RightInverse g f) : S →ₙ+* R :=
   { (f : R →+ S).inverse g h₁ h₂, (f : R →ₙ* S).inverse g h₁ h₂ with toFun := g }
 
-/-- makes a `RingHom` from the bijective inverse of a `RingHom` -/  
+/-- makes a `RingHom` from the bijective inverse of a `RingHom` -/
 @[simps] def RingHom.inverse [NonAssocSemiring R] [NonAssocSemiring S]
     (f : RingHom R S) (g : S → R)
     (h₁ : Function.LeftInverse g f) (h₂ : Function.RightInverse g f) : S →+* R :=
-  { (f : OneHom R S).inverse g h₁, 
+  { (f : OneHom R S).inverse g h₁,
     (f : MulHom R S).inverse g h₁ h₂,
     (f : R →+ S).inverse g h₁ h₂ with toFun := g }
 
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
@@ -39,7 +39,7 @@ Equiv, MulEquiv, AddEquiv, RingEquiv, MulAut, AddAut, RingAut
 -/
 
 
-variable {F α β R S S' : Type _}
+variable {F α β R S S' : Type*}
 
 
 /-- makes a `NonUnitalRingHom` from the bijective inverse of a `NonUnitalRingHom` -/  
@@ -59,7 +59,7 @@ variable {F α β R S S' : Type _}
 
 /-- An equivalence between two (non-unital non-associative semi)rings that preserves the
 algebraic structure. -/
-structure RingEquiv (R S : Type _) [Mul R] [Mul S] [Add R] [Add S] extends R ≃ S, R ≃* S, R ≃+ S
+structure RingEquiv (R S : Type*) [Mul R] [Mul S] [Add R] [Add S] extends R ≃ S, R ≃* S, R ≃+ S
 #align ring_equiv RingEquiv
 
 -- mathport name: «expr ≃+* »*
@@ -80,7 +80,7 @@ add_decl_doc RingEquiv.toMulEquiv
 
 /-- `RingEquivClass F R S` states that `F` is a type of ring structure preserving equivalences.
 You should extend this class when you extend `RingEquiv`. -/
-class RingEquivClass (F : Type _) (R S : outParam (Type _)) [Mul R] [Add R] [Mul S] [Add S] extends
+class RingEquivClass (F : Type*) (R S : outParam (Type*)) [Mul R] [Add R] [Mul S] [Add S] extends
   MulEquivClass F R S where
   /-- By definition, a ring isomorphism preserves the additive structure. -/
   map_add : ∀ (f : F) (a b), f (a + b) = f a + f b
@@ -472,7 +472,7 @@ This is the `RingEquiv` version of `Equiv.piCongrRight`, and the dependent versi
 `RingEquiv.arrowCongr`.
 -/
 @[simps apply]
-def piCongrRight {ι : Type _} {R S : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)]
+def piCongrRight {ι : Type*} {R S : ι → Type*} [∀ i, NonUnitalNonAssocSemiring (R i)]
     [∀ i, NonUnitalNonAssocSemiring (S i)] (e : ∀ i, R i ≃+* S i) : (∀ i, R i) ≃+* ∀ i, S i :=
   { @MulEquiv.piCongrRight ι R S _ _ fun i => (e i).toMulEquiv,
     @AddEquiv.piCongrRight ι R S _ _ fun i => (e i).toAddEquiv with
@@ -482,20 +482,20 @@ def piCongrRight {ι : Type _} {R S : ι → Type _} [∀ i, NonUnitalNonAssocSe
 #align ring_equiv.Pi_congr_right_apply RingEquiv.piCongrRight_apply
 
 @[simp]
-theorem piCongrRight_refl {ι : Type _} {R : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)] :
+theorem piCongrRight_refl {ι : Type*} {R : ι → Type*} [∀ i, NonUnitalNonAssocSemiring (R i)] :
     (piCongrRight fun i => RingEquiv.refl (R i)) = RingEquiv.refl _ :=
   rfl
 #align ring_equiv.Pi_congr_right_refl RingEquiv.piCongrRight_refl
 
 @[simp]
-theorem piCongrRight_symm {ι : Type _} {R S : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)]
+theorem piCongrRight_symm {ι : Type*} {R S : ι → Type*} [∀ i, NonUnitalNonAssocSemiring (R i)]
     [∀ i, NonUnitalNonAssocSemiring (S i)] (e : ∀ i, R i ≃+* S i) :
     (piCongrRight e).symm = piCongrRight fun i => (e i).symm :=
   rfl
 #align ring_equiv.Pi_congr_right_symm RingEquiv.piCongrRight_symm
 
 @[simp]
-theorem piCongrRight_trans {ι : Type _} {R S T : ι → Type _}
+theorem piCongrRight_trans {ι : Type*} {R S T : ι → Type*}
     [∀ i, NonUnitalNonAssocSemiring (R i)] [∀ i, NonUnitalNonAssocSemiring (S i)]
     [∀ i, NonUnitalNonAssocSemiring (T i)] (e : ∀ i, R i ≃+* S i) (f : ∀ i, S i ≃+* T i) :
     (piCongrRight e).trans (piCongrRight f) = piCongrRight fun i => (e i).trans (f i) :=
@@ -626,7 +626,7 @@ theorem coe_toNonUnitalRingHom (f : R ≃+* S) : ⇑(f : R →ₙ+* S) = f :=
   rfl
 #align ring_equiv.coe_to_non_unital_ring_hom RingEquiv.coe_toNonUnitalRingHom
 
-theorem coe_nonUnitalRingHom_inj_iff {R S : Type _} [NonUnitalNonAssocSemiring R]
+theorem coe_nonUnitalRingHom_inj_iff {R S : Type*} [NonUnitalNonAssocSemiring R]
     [NonUnitalNonAssocSemiring S] (f g : R ≃+* S) : f = g ↔ (f : R →ₙ+* S) = g :=
   ⟨fun h => by rw [h], fun h => ext <| NonUnitalRingHom.ext_iff.mp h⟩
 #align ring_equiv.coe_non_unital_ring_hom_inj_iff RingEquiv.coe_nonUnitalRingHom_inj_iff
@@ -693,7 +693,7 @@ theorem coe_toRingHom (f : R ≃+* S) : ⇑(f : R →+* S) = f :=
   rfl
 #align ring_equiv.coe_to_ring_hom RingEquiv.coe_toRingHom
 
-theorem coe_ringHom_inj_iff {R S : Type _} [NonAssocSemiring R] [NonAssocSemiring S]
+theorem coe_ringHom_inj_iff {R S : Type*} [NonAssocSemiring R] [NonAssocSemiring S]
     (f g : R ≃+* S) : f = g ↔ (f : R →+* S) = g :=
   ⟨fun h => by rw [h], fun h => ext <| RingHom.ext_iff.mp h⟩
 #align ring_equiv.coe_ring_hom_inj_iff RingEquiv.coe_ringHom_inj_iff
@@ -782,7 +782,7 @@ theorem symm_toRingHom_comp_toRingHom (e : R ≃+* S) :
 /-- Construct an equivalence of rings from homomorphisms in both directions, which are inverses.
 -/
 @[simps]
-def ofHomInv' {R S F G : Type _} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
+def ofHomInv' {R S F G : Type*} [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
     [NonUnitalRingHomClass F R S] [NonUnitalRingHomClass G S R] (hom : F) (inv : G)
     (hom_inv_id : (inv : S →ₙ+* R).comp (hom : R →ₙ+* S) = NonUnitalRingHom.id R)
     (inv_hom_id : (hom : R →ₙ+* S).comp (inv : S →ₙ+* R) = NonUnitalRingHom.id S) :
@@ -801,7 +801,7 @@ def ofHomInv' {R S F G : Type _} [NonUnitalNonAssocSemiring R] [NonUnitalNonAsso
 Construct an equivalence of rings from unital homomorphisms in both directions, which are inverses.
 -/
 @[simps]
-def ofHomInv {R S F G : Type _} [NonAssocSemiring R] [NonAssocSemiring S] [RingHomClass F R S]
+def ofHomInv {R S F G : Type*} [NonAssocSemiring R] [NonAssocSemiring S] [RingHomClass F R S]
     [RingHomClass G S R] (hom : F) (inv : G)
     (hom_inv_id : (inv : S →+* R).comp (hom : R →+* S) = RingHom.id R)
     (inv_hom_id : (hom : R →+* S).comp (inv : S →+* R) = RingHom.id S) :
@@ -833,7 +833,7 @@ end RingEquiv
 namespace MulEquiv
 
 /-- Gives a `RingEquiv` from an element of a `MulEquivClass` preserving addition.-/
-def toRingEquiv {R S F : Type _} [Add R] [Add S] [Mul R] [Mul S] [MulEquivClass F R S] (f : F)
+def toRingEquiv {R S F : Type*} [Add R] [Add S] [Mul R] [Mul S] [MulEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x + y) = f x + f y) : R ≃+* S :=
   { (f : R ≃* S).toEquiv, (f : R ≃* S), AddEquiv.mk' (f : R ≃* S).toEquiv H with }
 #align mul_equiv.to_ring_equiv MulEquiv.toRingEquiv
@@ -843,7 +843,7 @@ end MulEquiv
 namespace AddEquiv
 
 /-- Gives a `RingEquiv` from an element of an `AddEquivClass` preserving addition.-/
-def toRingEquiv {R S F : Type _} [Add R] [Add S] [Mul R] [Mul S] [AddEquivClass F R S] (f : F)
+def toRingEquiv {R S F : Type*} [Add R] [Add S] [Mul R] [Mul S] [AddEquivClass F R S] (f : F)
     (H : ∀ x y : R, f (x * y) = f x * f y) : R ≃+* S :=
   { (f : R ≃+ S).toEquiv, (f : R ≃+ S), MulEquiv.mk' (f : R ≃+ S).toEquiv H with }
 #align add_equiv.to_ring_equiv AddEquiv.toRingEquiv
@@ -866,7 +866,7 @@ theorem symm_trans_self (e : R ≃+* S) : e.symm.trans e = RingEquiv.refl S :=
 
 /-- If two rings are isomorphic, and the second doesn't have zero divisors,
 then so does the first. -/
-protected theorem noZeroDivisors {A : Type _} (B : Type _) [Ring A] [Ring B] [NoZeroDivisors B]
+protected theorem noZeroDivisors {A : Type*} (B : Type*) [Ring A] [Ring B] [NoZeroDivisors B]
     (e : A ≃+* B) : NoZeroDivisors A :=
   { eq_zero_or_eq_zero_of_mul_eq_zero := fun {x y} hxy => by
       have : e x * e y = 0 := by rw [← e.map_mul, hxy, e.map_zero]
@@ -874,7 +874,7 @@ protected theorem noZeroDivisors {A : Type _} (B : Type _) [Ring A] [Ring B] [No
 #align ring_equiv.no_zero_divisors RingEquiv.noZeroDivisors
 
 /-- If two rings are isomorphic, and the second is a domain, then so is the first. -/
-protected theorem isDomain {A : Type _} (B : Type _) [Ring A] [Ring B] [IsDomain B] (e : A ≃+* B) :
+protected theorem isDomain {A : Type*} (B : Type*) [Ring A] [Ring B] [IsDomain B] (e : A ≃+* B) :
     IsDomain A := by
   haveI : Nontrivial A := ⟨⟨e.symm 0, e.symm 1, e.symm.injective.ne zero_ne_one⟩⟩
   haveI := e.noZeroDivisors B
chore: remove 'Ported by' headers (#6018)

Briefly during the port we were adding "Ported by" headers, but only ~60 / 3000 files ended up with such a header.

I propose deleting them.

We could consider adding these uniformly via a script, as part of the great history rewrite...?

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

Diff
@@ -2,7 +2,6 @@
 Copyright (c) 2018 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
-Ported by: Anatole Dedecker
 -/
 import Mathlib.Algebra.Group.Opposite
 import Mathlib.Algebra.Hom.Ring
feat(Algebra.Ring.Equiv) : provide RingHom inverse (#5997)

Define:

  • OneHom.inverse (and its additive version)
  • NonUnitalRingHom.inverse
  • RingHom.inverse

Co-authored-by: Antoine Chambert-Loir <antoine.chambert-loir@math.univ-paris-diderot.fr>

Diff
@@ -8,6 +8,7 @@ import Mathlib.Algebra.Group.Opposite
 import Mathlib.Algebra.Hom.Ring
 import Mathlib.Logic.Equiv.Set
 import Mathlib.Util.AssertExists
+import Mathlib.Algebra.Hom.Equiv.Basic
 
 #align_import algebra.ring.equiv from "leanprover-community/mathlib"@"00f91228655eecdcd3ac97a7fd8dbcb139fe990a"
 
@@ -41,6 +42,22 @@ Equiv, MulEquiv, AddEquiv, RingEquiv, MulAut, AddAut, RingAut
 
 variable {F α β R S S' : Type _}
 
+
+/-- makes a `NonUnitalRingHom` from the bijective inverse of a `NonUnitalRingHom` -/  
+@[simps] def NonUnitalRingHom.inverse
+    [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S]
+    (f : R →ₙ+* S) (g : S → R)
+    (h₁ : Function.LeftInverse g f) (h₂ : Function.RightInverse g f) : S →ₙ+* R :=
+  { (f : R →+ S).inverse g h₁ h₂, (f : R →ₙ* S).inverse g h₁ h₂ with toFun := g }
+
+/-- makes a `RingHom` from the bijective inverse of a `RingHom` -/  
+@[simps] def RingHom.inverse [NonAssocSemiring R] [NonAssocSemiring S]
+    (f : RingHom R S) (g : S → R)
+    (h₁ : Function.LeftInverse g f) (h₂ : Function.RightInverse g f) : S →+* R :=
+  { (f : OneHom R S).inverse g h₁, 
+    (f : MulHom R S).inverse g h₁ h₂,
+    (f : R →+ S).inverse g h₁ h₂ with toFun := g }
+
 /-- An equivalence between two (non-unital non-associative semi)rings that preserves the
 algebraic structure. -/
 structure RingEquiv (R S : Type _) [Mul R] [Mul S] [Add R] [Add S] extends R ≃ S, R ≃* S, R ≃+ S
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
@@ -3,17 +3,14 @@ Copyright (c) 2018 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 Ported by: Anatole Dedecker
-
-! This file was ported from Lean 3 source module algebra.ring.equiv
-! leanprover-community/mathlib commit 00f91228655eecdcd3ac97a7fd8dbcb139fe990a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Group.Opposite
 import Mathlib.Algebra.Hom.Ring
 import Mathlib.Logic.Equiv.Set
 import Mathlib.Util.AssertExists
 
+#align_import algebra.ring.equiv from "leanprover-community/mathlib"@"00f91228655eecdcd3ac97a7fd8dbcb139fe990a"
+
 /-!
 # (Semi)ring equivs
 
chore: remove redundant Coe (R ≃+* S) (R →+* S) (#5545)

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

Diff
@@ -604,12 +604,6 @@ theorem toNonUnitalRingHom_injective :
   RingEquiv.ext (NonUnitalRingHom.ext_iff.1 h)
 #align ring_equiv.to_non_unital_ring_hom_injective RingEquiv.toNonUnitalRingHom_injective
 
-/- The instance priority is lowered here so that in the case when `R` and `S` are both unital, Lean
-will first find and use `RingEquiv.instCoeToRingHom`. -/
-instance (priority := 900) instCoeToNonUnitalRingHom : Coe (R ≃+* S) (R →ₙ+* S) :=
-  ⟨RingEquiv.toNonUnitalRingHom⟩
-#align ring_equiv.has_coe_to_non_unital_ring_hom RingEquiv.instCoeToNonUnitalRingHom
-
 theorem toNonUnitalRingHom_eq_coe (f : R ≃+* S) : f.toNonUnitalRingHom = ↑f :=
   rfl
 #align ring_equiv.to_non_unital_ring_hom_eq_coe RingEquiv.toNonUnitalRingHom_eq_coe
@@ -677,10 +671,6 @@ theorem toRingHom_injective : Function.Injective (toRingHom : R ≃+* S → R 
   RingEquiv.ext (RingHom.ext_iff.1 h)
 #align ring_equiv.to_ring_hom_injective RingEquiv.toRingHom_injective
 
-instance instCoeToRingHom : Coe (R ≃+* S) (R →+* S) :=
-  ⟨RingEquiv.toRingHom⟩
-#align ring_equiv.has_coe_to_ring_hom RingEquiv.instCoeToRingHom
-
 @[simp] theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
   rfl
 #align ring_equiv.to_ring_hom_eq_coe RingEquiv.toRingHom_eq_coe
chore: fix grammar 1/3 (#5001)

All of these are doc fixes

Diff
@@ -718,7 +718,7 @@ theorem toAddMonoidMom_commutes (f : R ≃+* S) :
   rfl
 #align ring_equiv.to_add_monoid_hom_commutes RingEquiv.toAddMonoidMom_commutes
 
-/-- The two paths coercion can take to an `MonoidHom` are equivalent -/
+/-- The two paths coercion can take to a `MonoidHom` are equivalent -/
 theorem toMonoidHom_commutes (f : R ≃+* S) :
     (f : R →+* S).toMonoidHom = (f : R ≃* S).toMonoidHom :=
   rfl
feat: change ConcreteCategory.hasCoeToFun to FunLike (#4693)
Diff
@@ -681,7 +681,7 @@ instance instCoeToRingHom : Coe (R ≃+* S) (R →+* S) :=
   ⟨RingEquiv.toRingHom⟩
 #align ring_equiv.has_coe_to_ring_hom RingEquiv.instCoeToRingHom
 
-theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
+@[simp] theorem toRingHom_eq_coe (f : R ≃+* S) : f.toRingHom = ↑f :=
   rfl
 #align ring_equiv.to_ring_hom_eq_coe RingEquiv.toRingHom_eq_coe
 
@@ -744,13 +744,13 @@ theorem toAddMonoidHom_refl : (RingEquiv.refl R).toAddMonoidHom = AddMonoidHom.i
   rfl
 #align ring_equiv.to_add_monoid_hom_refl RingEquiv.toAddMonoidHom_refl
 
-@[simp]
+-- Porting note : Now other `simp` can do this, so removed `simp` attribute
 theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
     ∀ y : S, e.toRingHom (e.symm.toRingHom y) = y :=
   e.toEquiv.apply_symm_apply
 #align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_apply
 
-@[simp]
+-- Porting note : Now other `simp` can do this, so removed `simp` attribute
 theorem symm_toRingHom_apply_toRingHom_apply (e : R ≃+* S) :
     ∀ x : R, e.symm.toRingHom (e.toRingHom x) = x :=
   Equiv.symm_apply_apply e.toEquiv
@@ -762,14 +762,14 @@ theorem toRingHom_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
   rfl
 #align ring_equiv.to_ring_hom_trans RingEquiv.toRingHom_trans
 
-@[simp]
+-- Porting note : Now other `simp` can do this, so removed `simp` attribute
 theorem toRingHom_comp_symm_toRingHom (e : R ≃+* S) :
     e.toRingHom.comp e.symm.toRingHom = RingHom.id _ := by
   ext
   simp
 #align ring_equiv.to_ring_hom_comp_symm_to_ring_hom RingEquiv.toRingHom_comp_symm_toRingHom
 
-@[simp]
+-- Porting note : Now other `simp` can do this, so removed `simp` attribute
 theorem symm_toRingHom_comp_toRingHom (e : R ≃+* S) :
     e.symm.toRingHom.comp e.toRingHom = RingHom.id _ := by
   ext
feat: assert_not_exists (#4245)
Diff
@@ -12,6 +12,7 @@ Ported by: Anatole Dedecker
 import Mathlib.Algebra.Group.Opposite
 import Mathlib.Algebra.Hom.Ring
 import Mathlib.Logic.Equiv.Set
+import Mathlib.Util.AssertExists
 
 /-!
 # (Semi)ring equivs
@@ -880,5 +881,4 @@ protected theorem isDomain {A : Type _} (B : Type _) [Ring A] [Ring B] [IsDomain
 end RingEquiv
 
 -- guard against import creep
--- Porting note: not implemented yet
--- assert_not_exists fintype
+assert_not_exists Fintype
refactor: make MulOpposite = AddOpposite (#4050)

It turns out to be convenient to have MulOpposite α = AddOpposite α true by definition, in the same way that it is convenient to have Additive α = α; this means that we also get the defeq AddOpposite (Additive α) = MulOpposite α, which is convenient when working with quotients. This is a compromise between making MulOpposite α = AddOpposite α = α (what we had in Lean 3) and having no defeqs within those three types (which we had as of #1036).

This is motivated by #3333

Diff
@@ -367,7 +367,7 @@ section Opposite
 open MulOpposite
 
 /-- A ring iso `α ≃+* β` can equivalently be viewed as a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. -/
-@[simps!]
+@[simps! symm_apply_apply symm_apply_symm_apply apply_apply apply_symm_apply]
 protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] :
     α ≃+* β ≃ (αᵐᵒᵖ ≃+* βᵐᵒᵖ) where
   toFun f := { AddEquiv.mulOp f.toAddEquiv, MulEquiv.op f.toMulEquiv with }
Diff
@@ -5,7 +5,7 @@ Authors: Johannes Hölzl, Callum Sutton, Yury Kudryashov
 Ported by: Anatole Dedecker
 
 ! This file was ported from Lean 3 source module algebra.ring.equiv
-! leanprover-community/mathlib commit a59dad53320b73ef180174aae867addd707ef00e
+! leanprover-community/mathlib commit 00f91228655eecdcd3ac97a7fd8dbcb139fe990a
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -583,6 +583,10 @@ theorem map_neg_one : f (-1) = -1 :=
   f.map_one ▸ f.map_neg 1
 #align ring_equiv.map_neg_one RingEquiv.map_neg_one
 
+theorem map_eq_neg_one_iff {x : R} : f x = -1 ↔ x = -1 := by
+  rw [← neg_eq_iff_eq_neg, ← neg_eq_iff_eq_neg, ← map_neg, RingEquiv.map_eq_one_iff]
+#align ring_equiv.map_eq_neg_one_iff RingEquiv.map_eq_neg_one_iff
+
 end Ring
 
 section NonUnitalSemiringHom
chore: bump to nightly-2023-04-11 (#3139)
Diff
@@ -75,13 +75,13 @@ class RingEquivClass (F : Type _) (R S : outParam (Type _)) [Mul R] [Add R] [Mul
 namespace RingEquivClass
 
 -- See note [lower instance priority]
-instance (priority := 100) toAddEquivClass {_ : Mul R} {_ : Add R}
-    {_ : Mul S} {_ : Add S} [h : RingEquivClass F R S] : AddEquivClass F R S :=
+instance (priority := 100) toAddEquivClass [Mul R] [Add R]
+    [Mul S] [Add S] [h : RingEquivClass F R S] : AddEquivClass F R S :=
   { h with coe := h.coe }
 #align ring_equiv_class.to_add_equiv_class RingEquivClass.toAddEquivClass
 
 -- See note [lower instance priority]
-instance (priority := 100) toRingHomClass {_ : NonAssocSemiring R} {_ : NonAssocSemiring S}
+instance (priority := 100) toRingHomClass [NonAssocSemiring R] [NonAssocSemiring S]
     [h : RingEquivClass F R S] : RingHomClass F R S :=
   { h with
     coe := h.coe
@@ -91,8 +91,8 @@ instance (priority := 100) toRingHomClass {_ : NonAssocSemiring R} {_ : NonAssoc
 #align ring_equiv_class.to_ring_hom_class RingEquivClass.toRingHomClass
 
 -- See note [lower instance priority]
-instance (priority := 100) toNonUnitalRingHomClass {_ : NonUnitalNonAssocSemiring R}
-    {_ : NonUnitalNonAssocSemiring S} [h : RingEquivClass F R S] : NonUnitalRingHomClass F R S :=
+instance (priority := 100) toNonUnitalRingHomClass [NonUnitalNonAssocSemiring R]
+    [NonUnitalNonAssocSemiring S] [h : RingEquivClass F R S] : NonUnitalRingHomClass F R S :=
   { h with
     coe := h.coe
     coe_injective' := FunLike.coe_injective
fix: add back lemmas deleted during porting (#3035)

These lemmas are not tautologies, despite the assumption that they were. We know this because otherwise CI would fail.

After adding these back, a few statements downstream need to change from statements about toEquiv to statements about EquivLike.toEquiv.

Diff
@@ -132,8 +132,11 @@ instance : RingEquivClass (R ≃+* S) R S where
   left_inv f := f.left_inv
   right_inv f := f.right_inv
 
--- Porting note: `toEquiv_eq_coe` no longer needed in Lean4
-#noalign ring_equiv.to_equiv_eq_coe
+@[simp]
+theorem toEquiv_eq_coe (f : R ≃+* S) : f.toEquiv = f :=
+  rfl
+#align ring_equiv.to_equiv_eq_coe RingEquiv.toEquiv_eq_coe
+
 -- Porting note: `toFun_eq_coe` no longer needed in Lean4
 #noalign ring_equiv.to_fun_eq_coe
 
fix: add incorrectly-deleted lemmas (#3008)

These lemmas are still needed in Lean 4, despite claims in #1077 that they are not.

Diff
@@ -136,8 +136,11 @@ instance : RingEquivClass (R ≃+* S) R S where
 #noalign ring_equiv.to_equiv_eq_coe
 -- Porting note: `toFun_eq_coe` no longer needed in Lean4
 #noalign ring_equiv.to_fun_eq_coe
--- Porting note: `coe_toEquiv` no longer needed in Lean4
-#noalign ring_equiv.coe_to_equiv
+
+@[simp]
+theorem coe_toEquiv (f : R ≃+* S) : ⇑(f : R ≃ S) = f :=
+  rfl
+#align ring_equiv.coe_to_equiv RingEquiv.coe_toEquiv
 
 /-- A ring isomorphism preserves multiplication. -/
 protected theorem map_mul (e : R ≃+* S) (x y : R) : e (x * y) = e x * e y :=
@@ -156,8 +159,11 @@ theorem ext {f g : R ≃+* S} (h : ∀ x, f x = g x) : f = g :=
   FunLike.ext f g h
 #align ring_equiv.ext RingEquiv.ext
 
--- Porting note: `coe_mk` no longer needed in Lean4
-#noalign ring_equiv.coe_mk
+@[simp]
+theorem coe_mk (e h₃ h₄) : ⇑(⟨e, h₃, h₄⟩ : R ≃+* S) = e :=
+  rfl
+#align ring_equiv.coe_mk RingEquiv.coe_mkₓ
+
 -- Porting note: `toEquiv_mk` no longer needed in Lean4
 #noalign ring_equiv.to_equiv_mk
 
feat: port/RingTheory.Localization.Basic (#2741)
Diff
@@ -259,6 +259,11 @@ theorem symm_symm (e : R ≃+* S) : e.symm.symm = e :=
   ext fun _ => rfl
 #align ring_equiv.symm_symm RingEquiv.symm_symm
 
+--Porting note: new theorem
+@[simp]
+theorem symm_refl : (RingEquiv.refl R).symm = RingEquiv.refl R :=
+  rfl
+
 @[simp]
 theorem coe_toEquiv_symm (e : R ≃+* S) : (e.symm : S ≃ R) = (e : R ≃ S).symm :=
   rfl
@@ -509,7 +514,7 @@ in higher generality -/
 
 
 @[simp]
-theorem coe_ringHom_refl : (RingEquiv.refl R : R →* R) = RingHom.id R :=
+theorem coe_ringHom_refl : (RingEquiv.refl R : R →+* R) = RingHom.id R :=
   rfl
 #align ring_equiv.coe_ring_hom_refl RingEquiv.coe_ringHom_refl
 
feat: initialize_simps_projections automatically finds coercions (#2045)
  • initialize_simps_projections automatically find coercions if there is a Funlike or SetLike instance defined by one of the projections.
  • Some improvements compared to Lean 3:
    • Find coercions even if it is defined by a field of a parent structure
    • Find SetLike coercions

Not yet implemented (and rarely - if ever - used in mathlib3):

  • Automatic custom projections for algebraic notation (like +,*,...)

Co-authored-by: Johan Commelin <johan@commelin.net>

Diff
@@ -242,8 +242,6 @@ protected def symm (e : R ≃+* S) : S ≃+* R :=
   { e.toMulEquiv.symm, e.toAddEquiv.symm with }
 #align ring_equiv.symm RingEquiv.symm
 
-/-- See Note [custom simps projection] -/
-def Simps.apply (e : R ≃+* S) : R → S := e
 /-- See Note [custom simps projection] -/
 def Simps.symm_apply (e : R ≃+* S) : S → R :=
   e.symm
fix: replace symmApply by symm_apply (#2560)
Diff
@@ -245,11 +245,11 @@ protected def symm (e : R ≃+* S) : S ≃+* R :=
 /-- See Note [custom simps projection] -/
 def Simps.apply (e : R ≃+* S) : R → S := e
 /-- See Note [custom simps projection] -/
-def Simps.symmApply (e : R ≃+* S) : S → R :=
+def Simps.symm_apply (e : R ≃+* S) : S → R :=
   e.symm
-#align ring_equiv.simps.symm_apply RingEquiv.Simps.symmApply
+#align ring_equiv.simps.symm_apply RingEquiv.Simps.symm_apply
 
-initialize_simps_projections RingEquiv (toFun → apply, invFun → symmApply)
+initialize_simps_projections RingEquiv (toFun → apply, invFun → symm_apply)
 
 @[simp]
 theorem invFun_eq_symm (f : R ≃+* S) : EquivLike.inv f = f.symm :=
@@ -368,7 +368,7 @@ protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] :
     rfl
 #align ring_equiv.op RingEquiv.op
 #align ring_equiv.op_symm_apply_apply RingEquiv.op_symm_apply_apply
-#align ring_equiv.op_symm_apply_symm_apply RingEquiv.op_symm_apply_symmApply
+#align ring_equiv.op_symm_apply_symm_apply RingEquiv.op_symm_apply_symm_apply
 
 /-- The 'unopposite' of a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. Inverse to `RingEquiv.op`. -/
 @[simp]
@@ -774,7 +774,7 @@ def ofHomInv' {R S F G : Type _} [NonUnitalNonAssocSemiring R] [NonUnitalNonAsso
   map_mul' := map_mul hom
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv' RingEquiv.ofHomInv'
-#align ring_equiv.of_hom_inv'_symm_apply RingEquiv.ofHomInv'_symmApply
+#align ring_equiv.of_hom_inv'_symm_apply RingEquiv.ofHomInv'_symm_apply
 #align ring_equiv.of_hom_inv'_apply RingEquiv.ofHomInv'_apply
 
 /--
@@ -794,7 +794,7 @@ def ofHomInv {R S F G : Type _} [NonAssocSemiring R] [NonAssocSemiring S] [RingH
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv RingEquiv.ofHomInv
 #align ring_equiv.of_hom_inv_apply RingEquiv.ofHomInv_apply
-#align ring_equiv.of_hom_inv_symm_apply RingEquiv.ofHomInv_symmApply
+#align ring_equiv.of_hom_inv_symm_apply RingEquiv.ofHomInv_symm_apply
 
 end SemiringHom
 
feat: simps uses fields of parent structures (#2042)
  • initialize_simps_projections now by default generates all projections of all parent structures, and doesn't generate the projections to those parent structures.
  • You can also rename a nested projection directly, without having to specify intermediate parent structures
  • Added the option to turn the default behavior off (done in e.g. TwoPointed)

Internal changes:

  • Move most declarations to the Simps namespace, and shorten their names
  • Restructure ParsedProjectionData to avoid the bug reported here (and to another bug where it seemed that the wrong data was inserted in ParsedProjectionData, but it was hard to minimize because of all the crashes). If we manage to fix the bug in that Zulip thread, I'll see if I can track down the other bug in commit 97454284

Co-authored-by: Johan Commelin <johan@commelin.net>

Diff
@@ -249,7 +249,7 @@ def Simps.symmApply (e : R ≃+* S) : S → R :=
   e.symm
 #align ring_equiv.simps.symm_apply RingEquiv.Simps.symmApply
 
-initialize_simps_projections RingEquiv (toEquiv_toFun → apply, toEquiv_invFun → symmApply, -toEquiv)
+initialize_simps_projections RingEquiv (toFun → apply, invFun → symmApply)
 
 @[simp]
 theorem invFun_eq_symm (f : R ≃+* S) : EquivLike.inv f = f.symm :=
feat: require @[simps!] if simps runs in expensive mode (#1885)
  • This does not change the behavior of simps, just raises a linter error if you run simps in a more expensive mode without writing !.
  • Fixed some incorrect occurrences of to_additive, simps. Will do that systematically in future PR.
  • Fix port of OmegaCompletePartialOrder.ContinuousHom.ofMono a bit

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -355,7 +355,7 @@ section Opposite
 open MulOpposite
 
 /-- A ring iso `α ≃+* β` can equivalently be viewed as a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. -/
-@[simps]
+@[simps!]
 protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] :
     α ≃+* β ≃ (αᵐᵒᵖ ≃+* βᵐᵒᵖ) where
   toFun f := { AddEquiv.mulOp f.toAddEquiv, MulEquiv.op f.toMulEquiv with }
chore: add missing #align statements (#1902)

This PR is the result of a slight variant on the following "algorithm"

  • take all mathlib 3 names, remove _ and make all uppercase letters into lowercase
  • take all mathlib 4 names, remove _ and make all uppercase letters into lowercase
  • look for matches, and create pairs (original_lean3_name, OriginalLean4Name)
  • for pairs that do not have an align statement:
    • use Lean 4 to lookup the file + position of the Lean 4 name
    • add an #align statement just before the next empty line
  • manually fix some tiny mistakes (e.g., empty lines in proofs might cause the #align statement to have been inserted too early)
Diff
@@ -54,12 +54,15 @@ infixl:25 " ≃+* " => RingEquiv
 
 /-- The "plain" equivalence of types underlying an equivalence of (semi)rings. -/
 add_decl_doc RingEquiv.toEquiv
+#align ring_equiv.to_equiv RingEquiv.toEquiv
 
 /-- The equivalence of additive monoids underlying an equivalence of (semi)rings. -/
 add_decl_doc RingEquiv.toAddEquiv
+#align ring_equiv.to_add_equiv RingEquiv.toAddEquiv
 
 /-- The equivalence of multiplicative monoids underlying an equivalence of (semi)rings. -/
 add_decl_doc RingEquiv.toMulEquiv
+#align ring_equiv.to_mul_equiv RingEquiv.toMulEquiv
 
 /-- `RingEquivClass F R S` states that `F` is a type of ring structure preserving equivalences.
 You should extend this class when you extend `RingEquiv`. -/
@@ -364,6 +367,8 @@ protected def op {α β} [Add α] [Mul α] [Add β] [Mul β] :
     ext
     rfl
 #align ring_equiv.op RingEquiv.op
+#align ring_equiv.op_symm_apply_apply RingEquiv.op_symm_apply_apply
+#align ring_equiv.op_symm_apply_symm_apply RingEquiv.op_symm_apply_symmApply
 
 /-- The 'unopposite' of a ring iso `αᵐᵒᵖ ≃+* βᵐᵒᵖ`. Inverse to `RingEquiv.op`. -/
 @[simp]
@@ -448,6 +453,7 @@ def piCongrRight {ι : Type _} {R S : ι → Type _} [∀ i, NonUnitalNonAssocSe
     toFun := fun x j => e j (x j)
     invFun := fun x j => (e j).symm (x j) }
 #align ring_equiv.Pi_congr_right RingEquiv.piCongrRight
+#align ring_equiv.Pi_congr_right_apply RingEquiv.piCongrRight_apply
 
 @[simp]
 theorem piCongrRight_refl {ι : Type _} {R : ι → Type _} [∀ i, NonUnitalNonAssocSemiring (R i)] :
@@ -768,6 +774,8 @@ def ofHomInv' {R S F G : Type _} [NonUnitalNonAssocSemiring R] [NonUnitalNonAsso
   map_mul' := map_mul hom
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv' RingEquiv.ofHomInv'
+#align ring_equiv.of_hom_inv'_symm_apply RingEquiv.ofHomInv'_symmApply
+#align ring_equiv.of_hom_inv'_apply RingEquiv.ofHomInv'_apply
 
 /--
 Construct an equivalence of rings from unital homomorphisms in both directions, which are inverses.
@@ -785,6 +793,8 @@ def ofHomInv {R S F G : Type _} [NonAssocSemiring R] [NonAssocSemiring S] [RingH
   map_mul' := map_mul hom
   map_add' := map_add hom
 #align ring_equiv.of_hom_inv RingEquiv.ofHomInv
+#align ring_equiv.of_hom_inv_apply RingEquiv.ofHomInv_apply
+#align ring_equiv.of_hom_inv_symm_apply RingEquiv.ofHomInv_symmApply
 
 end SemiringHom
 
chore: the style linter shouldn't complain about long #align lines (#1643)
Diff
@@ -611,17 +611,13 @@ theorem toNonUnitalRingHom_refl :
 theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
     ∀ y : S, e.toNonUnitalRingHom (e.symm.toNonUnitalRingHom y) = y :=
   e.toEquiv.apply_symm_apply
-#align
-  ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply
-  RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply
+#align ring_equiv.to_non_unital_ring_hom_apply_symm_to_non_unital_ring_hom_apply RingEquiv.toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply
 
 @[simp]
 theorem symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply (e : R ≃+* S) :
     ∀ x : R, e.symm.toNonUnitalRingHom (e.toNonUnitalRingHom x) = x :=
   Equiv.symm_apply_apply e.toEquiv
-#align
-  ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply
-  RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply
+#align ring_equiv.symm_to_non_unital_ring_hom_apply_to_non_unital_ring_hom_apply RingEquiv.symm_toNonUnitalRingHom_apply_toNonUnitalRingHom_apply
 
 @[simp]
 theorem toNonUnitalRingHom_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
@@ -634,18 +630,14 @@ theorem toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom (e : R ≃+* S) :
     e.toNonUnitalRingHom.comp e.symm.toNonUnitalRingHom = NonUnitalRingHom.id _ := by
   ext
   simp
-#align
-  ring_equiv.to_non_unital_ring_hom_comp_symm_to_non_unital_ring_hom
-  RingEquiv.toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom
+#align ring_equiv.to_non_unital_ring_hom_comp_symm_to_non_unital_ring_hom RingEquiv.toNonUnitalRingHomm_comp_symm_toNonUnitalRingHom
 
 @[simp]
 theorem symm_toNonUnitalRingHom_comp_toNonUnitalRingHom (e : R ≃+* S) :
     e.symm.toNonUnitalRingHom.comp e.toNonUnitalRingHom = NonUnitalRingHom.id _ := by
   ext
   simp
-#align
-  ring_equiv.symm_to_non_unital_ring_hom_comp_to_non_unital_ring_hom
-  RingEquiv.symm_toNonUnitalRingHom_comp_toNonUnitalRingHom
+#align ring_equiv.symm_to_non_unital_ring_hom_comp_to_non_unital_ring_hom RingEquiv.symm_toNonUnitalRingHom_comp_toNonUnitalRingHom
 
 end NonUnitalSemiringHom
 
@@ -733,15 +725,13 @@ theorem toAddMonoidHom_refl : (RingEquiv.refl R).toAddMonoidHom = AddMonoidHom.i
 theorem toRingHom_apply_symm_toRingHom_apply (e : R ≃+* S) :
     ∀ y : S, e.toRingHom (e.symm.toRingHom y) = y :=
   e.toEquiv.apply_symm_apply
-#align
-  ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_apply
+#align ring_equiv.to_ring_hom_apply_symm_to_ring_hom_apply RingEquiv.toRingHom_apply_symm_toRingHom_apply
 
 @[simp]
 theorem symm_toRingHom_apply_toRingHom_apply (e : R ≃+* S) :
     ∀ x : R, e.symm.toRingHom (e.toRingHom x) = x :=
   Equiv.symm_apply_apply e.toEquiv
-#align
-  ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply RingEquiv.symm_toRingHom_apply_toRingHom_apply
+#align ring_equiv.symm_to_ring_hom_apply_to_ring_hom_apply RingEquiv.symm_toRingHom_apply_toRingHom_apply
 
 @[simp]
 theorem toRingHom_trans (e₁ : R ≃+* S) (e₂ : S ≃+* S') :
chore: fix more casing errors per naming scheme (#1232)

I've avoided anything under Tactic or test.

In correcting the names, I found Option.isNone_iff_eq_none duplicated between Std and Mathlib, so the Mathlib one has been removed.

Co-authored-by: Reid Barton <rwbarton@gmail.com>

Diff
@@ -602,10 +602,10 @@ theorem coe_nonUnitalRingHom_inj_iff {R S : Type _} [NonUnitalNonAssocSemiring R
 #align ring_equiv.coe_non_unital_ring_hom_inj_iff RingEquiv.coe_nonUnitalRingHom_inj_iff
 
 @[simp]
-theorem to_nonUnitalRingHom_refl :
+theorem toNonUnitalRingHom_refl :
     (RingEquiv.refl R).toNonUnitalRingHom = NonUnitalRingHom.id R :=
   rfl
-#align ring_equiv.to_non_unital_ring_hom_refl RingEquiv.to_nonUnitalRingHom_refl
+#align ring_equiv.to_non_unital_ring_hom_refl RingEquiv.toNonUnitalRingHom_refl
 
 @[simp]
 theorem toNonUnitalRingHom_apply_symm_toNonUnitalRingHom_apply (e : R ≃+* S) :
@@ -858,7 +858,7 @@ protected theorem isDomain {A : Type _} (B : Type _) [Ring A] [Ring B] [IsDomain
     IsDomain A := by
   haveI : Nontrivial A := ⟨⟨e.symm 0, e.symm 1, e.symm.injective.ne zero_ne_one⟩⟩
   haveI := e.noZeroDivisors B
-  exact NoZeroDivisors.toIsDomain _
+  exact NoZeroDivisors.to_isDomain _
 #align ring_equiv.is_domain RingEquiv.isDomain
 
 end RingEquiv
feat: port Algebra.Ring.Equiv (#1077)

See discussion here and there

I used #835 as a reference

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

Dependencies 62

63 files ported (100.0%)
32582 lines ported (100.0%)

All dependencies are ported!