algebra.algebra.prodMathlib.Algebra.Algebra.Prod

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -109,7 +109,7 @@ theorem snd_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : (snd R B C).comp (pro
 #print AlgHom.prod_fst_snd /-
 @[simp]
 theorem prod_fst_snd : prod (fst R A B) (snd R A B) = 1 :=
-  FunLike.coe_injective Pi.prod_fst_snd
+  DFunLike.coe_injective Pi.prod_fst_snd
 #align alg_hom.prod_fst_snd AlgHom.prod_fst_snd
 -/
 
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2018 Kenny Lau. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau, Yury Kudryashov
 -/
-import Mathbin.Algebra.Algebra.Hom
+import Algebra.Algebra.Hom
 
 #align_import algebra.algebra.prod from "leanprover-community/mathlib"@"23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6"
 
Diff
@@ -37,7 +37,7 @@ open Algebra
 
 #print Prod.algebra /-
 instance algebra : Algebra R (A × B) :=
-  { Prod.module,
+  { Prod.instModule,
     RingHom.prod (algebraMap R A)
       (algebraMap R
         B) with
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2018 Kenny Lau. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau, Yury Kudryashov
-
-! This file was ported from Lean 3 source module algebra.algebra.prod
-! leanprover-community/mathlib commit 23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Algebra.Hom
 
+#align_import algebra.algebra.prod from "leanprover-community/mathlib"@"23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6"
+
 /-!
 # The R-algebra structure on products of R-algebras
 
Diff
@@ -38,6 +38,7 @@ variable (R A B)
 
 open Algebra
 
+#print Prod.algebra /-
 instance algebra : Algebra R (A × B) :=
   { Prod.module,
     RingHom.prod (algebraMap R A)
@@ -46,13 +47,16 @@ instance algebra : Algebra R (A × B) :=
     commutes' := by rintro r ⟨a, b⟩; dsimp; rw [commutes r a, commutes r b]
     smul_def' := by rintro r ⟨a, b⟩; dsimp; rw [Algebra.smul_def r a, Algebra.smul_def r b] }
 #align prod.algebra Prod.algebra
+-/
 
 variable {R A B}
 
+#print Prod.algebraMap_apply /-
 @[simp]
 theorem algebraMap_apply (r : R) : algebraMap R (A × B) r = (algebraMap R A r, algebraMap R B r) :=
   rfl
 #align prod.algebra_map_apply Prod.algebraMap_apply
+-/
 
 end Prod
 
@@ -60,18 +64,23 @@ namespace AlgHom
 
 variable (R A B)
 
+#print AlgHom.fst /-
 /-- First projection as `alg_hom`. -/
 def fst : A × B →ₐ[R] A :=
   { RingHom.fst A B with commutes' := fun r => rfl }
 #align alg_hom.fst AlgHom.fst
+-/
 
+#print AlgHom.snd /-
 /-- Second projection as `alg_hom`. -/
 def snd : A × B →ₐ[R] B :=
   { RingHom.snd A B with commutes' := fun r => rfl }
 #align alg_hom.snd AlgHom.snd
+-/
 
 variable {R A B}
 
+#print AlgHom.prod /-
 /-- The `pi.prod` of two morphisms is a morphism. -/
 @[simps]
 def prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : A →ₐ[R] B × C :=
@@ -80,24 +89,34 @@ def prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : A →ₐ[R] B × C :=
       simp only [to_ring_hom_eq_coe, RingHom.toFun_eq_coe, RingHom.prod_apply, coe_to_ring_hom,
         commutes, Prod.algebraMap_apply] }
 #align alg_hom.prod AlgHom.prod
+-/
 
+#print AlgHom.coe_prod /-
 theorem coe_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : ⇑(f.Prod g) = Pi.prod f g :=
   rfl
 #align alg_hom.coe_prod AlgHom.coe_prod
+-/
 
+#print AlgHom.fst_prod /-
 @[simp]
 theorem fst_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : (fst R B C).comp (prod f g) = f := by ext <;> rfl
 #align alg_hom.fst_prod AlgHom.fst_prod
+-/
 
+#print AlgHom.snd_prod /-
 @[simp]
 theorem snd_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : (snd R B C).comp (prod f g) = g := by ext <;> rfl
 #align alg_hom.snd_prod AlgHom.snd_prod
+-/
 
+#print AlgHom.prod_fst_snd /-
 @[simp]
 theorem prod_fst_snd : prod (fst R A B) (snd R A B) = 1 :=
   FunLike.coe_injective Pi.prod_fst_snd
 #align alg_hom.prod_fst_snd AlgHom.prod_fst_snd
+-/
 
+#print AlgHom.prodEquiv /-
 /-- Taking the product of two maps with the same domain is equivalent to taking the product of
 their codomains. -/
 @[simps]
@@ -108,6 +127,7 @@ def prodEquiv : (A →ₐ[R] B) × (A →ₐ[R] C) ≃ (A →ₐ[R] B × C)
   left_inv f := by ext <;> rfl
   right_inv f := by ext <;> rfl
 #align alg_hom.prod_equiv AlgHom.prodEquiv
+-/
 
 end AlgHom
 
Diff
@@ -38,12 +38,6 @@ variable (R A B)
 
 open Algebra
 
-/- warning: prod.algebra -> Prod.algebra is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) (A : Type.{u2}) (B : Type.{u3}) [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4], Algebra.{u1, max u2 u3} R (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4)
-but is expected to have type
-  forall (R : Type.{u1}) (A : Type.{u2}) (B : Type.{u3}) [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4], Algebra.{u1, max u3 u2} R (Prod.{u2, u3} A B) _inst_1 (Prod.instSemiringProd.{u2, u3} A B _inst_2 _inst_4)
-Case conversion may be inaccurate. Consider using '#align prod.algebra Prod.algebraₓ'. -/
 instance algebra : Algebra R (A × B) :=
   { Prod.module,
     RingHom.prod (algebraMap R A)
@@ -55,12 +49,6 @@ instance algebra : Algebra R (A × B) :=
 
 variable {R A B}
 
-/- warning: prod.algebra_map_apply -> Prod.algebraMap_apply is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} A B) (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ u1) (succ (max u2 u3))} (RingHom.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) (fun (_x : RingHom.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) => R -> (Prod.{u2, u3} A B)) (RingHom.hasCoeToFun.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) (algebraMap.{u1, max u2 u3} R (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u2, u3} A B (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (fun (_x : RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) => R -> A) (RingHom.hasCoeToFun.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (algebraMap.{u1, u2} R A _inst_1 _inst_2 _inst_3) r) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) (fun (_x : RingHom.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) => R -> B) (RingHom.hasCoeToFun.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) (algebraMap.{u1, u3} R B _inst_1 _inst_4 _inst_5) r))
-but is expected to have type
-  forall {R : Type.{u1}} {A : Type.{u3}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u1, u2} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u3) (succ u2)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Prod.{u3, u2} A B) r) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Prod.{u3, u2} A B) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))))) (algebraMap.{u1, max u2 u3} R (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u3, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => B) r) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2) (RingHom.instRingHomClassRingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (algebraMap.{u1, u3} R A _inst_1 _inst_2 _inst_3) r) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => B) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4) (RingHom.instRingHomClassRingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (algebraMap.{u1, u2} R B _inst_1 _inst_4 _inst_5) r))
-Case conversion may be inaccurate. Consider using '#align prod.algebra_map_apply Prod.algebraMap_applyₓ'. -/
 @[simp]
 theorem algebraMap_apply (r : R) : algebraMap R (A × B) r = (algebraMap R A r, algebraMap R B r) :=
   rfl
@@ -72,23 +60,11 @@ namespace AlgHom
 
 variable (R A B)
 
-/- warning: alg_hom.fst -> AlgHom.fst is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) (A : Type.{u2}) (B : Type.{u3}) [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4], AlgHom.{u1, max u2 u3, u2} R (Prod.{u2, u3} A B) A _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) _inst_2 (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) _inst_3
-but is expected to have type
-  forall (R : Type.{u1}) (A : Type.{u2}) (B : Type.{u3}) [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4], AlgHom.{u1, max u3 u2, u2} R (Prod.{u2, u3} A B) A _inst_1 (Prod.instSemiringProd.{u2, u3} A B _inst_2 _inst_4) _inst_2 (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) _inst_3
-Case conversion may be inaccurate. Consider using '#align alg_hom.fst AlgHom.fstₓ'. -/
 /-- First projection as `alg_hom`. -/
 def fst : A × B →ₐ[R] A :=
   { RingHom.fst A B with commutes' := fun r => rfl }
 #align alg_hom.fst AlgHom.fst
 
-/- warning: alg_hom.snd -> AlgHom.snd is a dubious translation:
-lean 3 declaration is
-  forall (R : Type.{u1}) (A : Type.{u2}) (B : Type.{u3}) [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4], AlgHom.{u1, max u2 u3, u3} R (Prod.{u2, u3} A B) B _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) _inst_4 (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) _inst_5
-but is expected to have type
-  forall (R : Type.{u1}) (A : Type.{u2}) (B : Type.{u3}) [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4], AlgHom.{u1, max u3 u2, u3} R (Prod.{u2, u3} A B) B _inst_1 (Prod.instSemiringProd.{u2, u3} A B _inst_2 _inst_4) _inst_4 (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) _inst_5
-Case conversion may be inaccurate. Consider using '#align alg_hom.snd AlgHom.sndₓ'. -/
 /-- Second projection as `alg_hom`. -/
 def snd : A × B →ₐ[R] B :=
   { RingHom.snd A B with commutes' := fun r => rfl }
@@ -96,12 +72,6 @@ def snd : A × B →ₐ[R] B :=
 
 variable {R A B}
 
-/- warning: alg_hom.prod -> AlgHom.prod is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} {C : Type.{u4}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u4} C] [_inst_7 : Algebra.{u1, u4} R C _inst_1 _inst_6], (AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) -> (AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) -> (AlgHom.{u1, u2, max u3 u4} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7))
-but is expected to have type
-  forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} {C : Type.{u4}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u4} C] [_inst_7 : Algebra.{u1, u4} R C _inst_1 _inst_6], (AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) -> (AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) -> (AlgHom.{u1, u2, max u4 u3} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7))
-Case conversion may be inaccurate. Consider using '#align alg_hom.prod AlgHom.prodₓ'. -/
 /-- The `pi.prod` of two morphisms is a morphism. -/
 @[simps]
 def prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : A →ₐ[R] B × C :=
@@ -111,50 +81,23 @@ def prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : A →ₐ[R] B × C :=
         commutes, Prod.algebraMap_apply] }
 #align alg_hom.prod AlgHom.prod
 
-/- warning: alg_hom.coe_prod -> AlgHom.coe_prod is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align alg_hom.coe_prod AlgHom.coe_prodₓ'. -/
 theorem coe_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : ⇑(f.Prod g) = Pi.prod f g :=
   rfl
 #align alg_hom.coe_prod AlgHom.coe_prod
 
-/- warning: alg_hom.fst_prod -> AlgHom.fst_prod is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} {C : Type.{u4}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u4} C] [_inst_7 : Algebra.{u1, u4} R C _inst_1 _inst_6] (f : AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (g : AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7), Eq.{max (succ u2) (succ u3)} (AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (AlgHom.comp.{u1, u2, max u3 u4, u3} R A (Prod.{u3, u4} B C) B _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_4 _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) _inst_5 (AlgHom.fst.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) (AlgHom.prod.{u1, u2, u3, u4} R A B C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 f g)) f
-but is expected to have type
-  forall {R : Type.{u4}} {A : Type.{u3}} {B : Type.{u2}} {C : Type.{u1}} [_inst_1 : CommSemiring.{u4} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u4, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u4, u2} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u1} C] [_inst_7 : Algebra.{u4, u1} R C _inst_1 _inst_6] (f : AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (g : AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7), Eq.{max (succ u3) (succ u2)} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (AlgHom.comp.{u4, u3, max u2 u1, u2} R A (Prod.{u2, u1} B C) B _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_4 _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) _inst_5 (AlgHom.fst.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) (AlgHom.prod.{u4, u3, u2, u1} R A B C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 f g)) f
-Case conversion may be inaccurate. Consider using '#align alg_hom.fst_prod AlgHom.fst_prodₓ'. -/
 @[simp]
 theorem fst_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : (fst R B C).comp (prod f g) = f := by ext <;> rfl
 #align alg_hom.fst_prod AlgHom.fst_prod
 
-/- warning: alg_hom.snd_prod -> AlgHom.snd_prod is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} {C : Type.{u4}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u4} C] [_inst_7 : Algebra.{u1, u4} R C _inst_1 _inst_6] (f : AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (g : AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7), Eq.{max (succ u2) (succ u4)} (AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (AlgHom.comp.{u1, u2, max u3 u4, u4} R A (Prod.{u3, u4} B C) C _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_6 _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) _inst_7 (AlgHom.snd.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) (AlgHom.prod.{u1, u2, u3, u4} R A B C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 f g)) g
-but is expected to have type
-  forall {R : Type.{u4}} {A : Type.{u3}} {B : Type.{u2}} {C : Type.{u1}} [_inst_1 : CommSemiring.{u4} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u4, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u4, u2} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u1} C] [_inst_7 : Algebra.{u4, u1} R C _inst_1 _inst_6] (f : AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (g : AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7), Eq.{max (succ u3) (succ u1)} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (AlgHom.comp.{u4, u3, max u2 u1, u1} R A (Prod.{u2, u1} B C) C _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_6 _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) _inst_7 (AlgHom.snd.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) (AlgHom.prod.{u4, u3, u2, u1} R A B C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 f g)) g
-Case conversion may be inaccurate. Consider using '#align alg_hom.snd_prod AlgHom.snd_prodₓ'. -/
 @[simp]
 theorem snd_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : (snd R B C).comp (prod f g) = g := by ext <;> rfl
 #align alg_hom.snd_prod AlgHom.snd_prod
 
-/- warning: alg_hom.prod_fst_snd -> AlgHom.prod_fst_snd is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4], Eq.{succ (max u2 u3)} (AlgHom.{u1, max u2 u3, max u2 u3} R (Prod.{u2, u3} A B) (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) (AlgHom.prod.{u1, max u2 u3, u2, u3} R (Prod.{u2, u3} A B) A B _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) _inst_2 _inst_3 _inst_4 _inst_5 (AlgHom.fst.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (AlgHom.snd.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) (OfNat.ofNat.{max u2 u3} (AlgHom.{u1, max u2 u3, max u2 u3} R (Prod.{u2, u3} A B) (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) 1 (OfNat.mk.{max u2 u3} (AlgHom.{u1, max u2 u3, max u2 u3} R (Prod.{u2, u3} A B) (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) 1 (One.one.{max u2 u3} (AlgHom.{u1, max u2 u3, max u2 u3} R (Prod.{u2, u3} A B) (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) (MulOneClass.toHasOne.{max u2 u3} (AlgHom.{u1, max u2 u3, max u2 u3} R (Prod.{u2, u3} A B) (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) (Monoid.toMulOneClass.{max u2 u3} (AlgHom.{u1, max u2 u3, max u2 u3} R (Prod.{u2, u3} A B) (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) (AlgHom.End.{u1, max u2 u3} R (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)))))))
-but is expected to have type
-  forall {R : Type.{u1}} {A : Type.{u3}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u1, u2} R B _inst_1 _inst_4], Eq.{max (succ u3) (succ u2)} (AlgHom.{u1, max u3 u2, max u2 u3} R (Prod.{u3, u2} A B) (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) (AlgHom.prod.{u1, max u3 u2, u3, u2} R (Prod.{u3, u2} A B) A B _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) _inst_2 _inst_3 _inst_4 _inst_5 (AlgHom.fst.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (AlgHom.snd.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) (OfNat.ofNat.{max u3 u2} (AlgHom.{u1, max u3 u2, max u2 u3} R (Prod.{u3, u2} A B) (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) 1 (One.toOfNat1.{max u3 u2} (AlgHom.{u1, max u3 u2, max u2 u3} R (Prod.{u3, u2} A B) (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) (Monoid.toOne.{max u3 u2} (AlgHom.{u1, max u3 u2, max u2 u3} R (Prod.{u3, u2} A B) (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) (AlgHom.End.{u1, max u3 u2} R (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)))))
-Case conversion may be inaccurate. Consider using '#align alg_hom.prod_fst_snd AlgHom.prod_fst_sndₓ'. -/
 @[simp]
 theorem prod_fst_snd : prod (fst R A B) (snd R A B) = 1 :=
   FunLike.coe_injective Pi.prod_fst_snd
 #align alg_hom.prod_fst_snd AlgHom.prod_fst_snd
 
-/- warning: alg_hom.prod_equiv -> AlgHom.prodEquiv is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} {C : Type.{u4}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u4} C] [_inst_7 : Algebra.{u1, u4} R C _inst_1 _inst_6], Equiv.{max (succ (max u2 u3)) (succ (max u2 u4)), max (succ u2) (succ (max u3 u4))} (Prod.{max u2 u3, max u2 u4} (AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7)) (AlgHom.{u1, u2, max u3 u4} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7))
-but is expected to have type
-  forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} {C : Type.{u4}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u4} C] [_inst_7 : Algebra.{u1, u4} R C _inst_1 _inst_6], Equiv.{max (succ (max u4 u2)) (succ (max u3 u2)), max (succ (max u4 u3)) (succ u2)} (Prod.{max u3 u2, max u4 u2} (AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7)) (AlgHom.{u1, u2, max u4 u3} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7))
-Case conversion may be inaccurate. Consider using '#align alg_hom.prod_equiv AlgHom.prodEquivₓ'. -/
 /-- Taking the product of two maps with the same domain is equivalent to taking the product of
 their codomains. -/
 @[simps]
Diff
@@ -49,14 +49,8 @@ instance algebra : Algebra R (A × B) :=
     RingHom.prod (algebraMap R A)
       (algebraMap R
         B) with
-    commutes' := by
-      rintro r ⟨a, b⟩
-      dsimp
-      rw [commutes r a, commutes r b]
-    smul_def' := by
-      rintro r ⟨a, b⟩
-      dsimp
-      rw [Algebra.smul_def r a, Algebra.smul_def r b] }
+    commutes' := by rintro r ⟨a, b⟩; dsimp; rw [commutes r a, commutes r b]
+    smul_def' := by rintro r ⟨a, b⟩; dsimp; rw [Algebra.smul_def r a, Algebra.smul_def r b] }
 #align prod.algebra Prod.algebra
 
 variable {R A B}
Diff
@@ -118,10 +118,7 @@ def prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : A →ₐ[R] B × C :=
 #align alg_hom.prod AlgHom.prod
 
 /- warning: alg_hom.coe_prod -> AlgHom.coe_prod is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} {C : Type.{u4}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u4} C] [_inst_7 : Algebra.{u1, u4} R C _inst_1 _inst_6] (f : AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (g : AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7), Eq.{max (succ u2) (succ (max u3 u4))} (A -> (Prod.{u3, u4} B C)) (coeFn.{max (succ u2) (succ (max u3 u4)), max (succ u2) (succ (max u3 u4))} (AlgHom.{u1, u2, max u3 u4} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (fun (_x : AlgHom.{u1, u2, max u3 u4} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) => A -> (Prod.{u3, u4} B C)) ([anonymous].{u1, u2, max u3 u4} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (AlgHom.prod.{u1, u2, u3, u4} R A B C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 f g)) (Pi.prod.{u2, u3, u4} A (fun (ᾰ : A) => B) (fun (ᾰ : A) => C) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (fun (_x : AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) => A -> B) ([anonymous].{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) f) (coeFn.{max (succ u2) (succ u4), max (succ u2) (succ u4)} (AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (fun (_x : AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) => A -> C) ([anonymous].{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) g))
-but is expected to have type
-  forall {R : Type.{u4}} {A : Type.{u3}} {B : Type.{u2}} {C : Type.{u1}} [_inst_1 : CommSemiring.{u4} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u4, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u4, u2} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u1} C] [_inst_7 : Algebra.{u4, u1} R C _inst_1 _inst_6] (f : AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (g : AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (forall (ᾰ : A), (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => Prod.{u2, u1} B C) ᾰ) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u3, max (succ u2) (succ u1)} (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => Prod.{u2, u1} B C) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u4, u3, max u2 u1} (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) R A (Prod.{u2, u1} B C) (SMulZeroClass.toSMul.{u4, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u4, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u4, u3} R A (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3))))) (SMulZeroClass.toSMul.{u4, max u2 u1} R (Prod.{u2, u1} B C) (AddMonoid.toZero.{max u2 u1} (Prod.{u2, u1} B C) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))))) (DistribSMul.toSMulZeroClass.{u4, max u2 u1} R (Prod.{u2, u1} B C) (AddMonoid.toAddZeroClass.{max u2 u1} (Prod.{u2, u1} B C) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))))) (DistribMulAction.toDistribSMul.{u4, max u2 u1} R (Prod.{u2, u1} B C) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6))))) (Module.toDistribMulAction.{u4, max u2 u1} R (Prod.{u2, u1} B C) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))) (Algebra.toModule.{u4, max u2 u1} R (Prod.{u2, u1} B C) _inst_1 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u4, u3, max u2 u1} (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) R A (Prod.{u2, u1} B C) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6))))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3)) (Module.toDistribMulAction.{u4, max u2 u1} R (Prod.{u2, u1} B C) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))) (Algebra.toModule.{u4, max u2 u1} R (Prod.{u2, u1} B C) _inst_1 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7))) (SemilinearMapClass.distribMulActionHomClass.{u4, u3, max u2 u1, max (max u3 u2) u1} R A (Prod.{u2, u1} B C) (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3) (Algebra.toModule.{u4, max u2 u1} R (Prod.{u2, u1} B C) _inst_1 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (AlgHomClass.linearMapClass.{u4, u3, max u2 u1, max (max u3 u2) u1} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (AlgHom.algHomClass.{u4, u3, max u2 u1} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)))))) (AlgHom.prod.{u4, u3, u2, u1} R A B C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 f g)) (Pi.prod.{u3, u2, u1} A (fun (ᾰ : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => B) ᾰ) (fun (ᾰ : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => C) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => B) _x) (SMulHomClass.toFunLike.{max u3 u2, u4, u3, u2} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) R A B (SMulZeroClass.toSMul.{u4, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u4, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u4, u3} R A (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3))))) (SMulZeroClass.toSMul.{u4, u2} R B (AddMonoid.toZero.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (DistribSMul.toSMulZeroClass.{u4, u2} R B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (DistribMulAction.toDistribSMul.{u4, u2} R B (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)))) (Module.toDistribMulAction.{u4, u2} R B (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (Algebra.toModule.{u4, u2} R B _inst_1 _inst_4 _inst_5))))) (DistribMulActionHomClass.toSMulHomClass.{max u3 u2, u4, u3, u2} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) R A B (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3)) (Module.toDistribMulAction.{u4, u2} R B (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (Algebra.toModule.{u4, u2} R B _inst_1 _inst_4 _inst_5)) (SemilinearMapClass.distribMulActionHomClass.{u4, u3, u2, max u3 u2} R A B (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3) (Algebra.toModule.{u4, u2} R B _inst_1 _inst_4 _inst_5) (AlgHomClass.linearMapClass.{u4, u3, u2, max u3 u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5 (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (AlgHom.algHomClass.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5))))) f) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => C) _x) (SMulHomClass.toFunLike.{max u3 u1, u4, u3, u1} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) R A C (SMulZeroClass.toSMul.{u4, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u4, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u4, u3} R A (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3))))) (SMulZeroClass.toSMul.{u4, u1} R C (AddMonoid.toZero.{u1} C (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))))) (DistribSMul.toSMulZeroClass.{u4, u1} R C (AddMonoid.toAddZeroClass.{u1} C (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))))) (DistribMulAction.toDistribSMul.{u4, u1} R C (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6)))) (Module.toDistribMulAction.{u4, u1} R C (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))) (Algebra.toModule.{u4, u1} R C _inst_1 _inst_6 _inst_7))))) (DistribMulActionHomClass.toSMulHomClass.{max u3 u1, u4, u3, u1} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) R A C (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3)) (Module.toDistribMulAction.{u4, u1} R C (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))) (Algebra.toModule.{u4, u1} R C _inst_1 _inst_6 _inst_7)) (SemilinearMapClass.distribMulActionHomClass.{u4, u3, u1, max u3 u1} R A C (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3) (Algebra.toModule.{u4, u1} R C _inst_1 _inst_6 _inst_7) (AlgHomClass.linearMapClass.{u4, u3, u1, max u3 u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7 (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (AlgHom.algHomClass.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7))))) g))
+<too large>
 Case conversion may be inaccurate. Consider using '#align alg_hom.coe_prod AlgHom.coe_prodₓ'. -/
 theorem coe_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : ⇑(f.Prod g) = Pi.prod f g :=
   rfl
Diff
@@ -121,7 +121,7 @@ def prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : A →ₐ[R] B × C :=
 lean 3 declaration is
   forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} {C : Type.{u4}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u4} C] [_inst_7 : Algebra.{u1, u4} R C _inst_1 _inst_6] (f : AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (g : AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7), Eq.{max (succ u2) (succ (max u3 u4))} (A -> (Prod.{u3, u4} B C)) (coeFn.{max (succ u2) (succ (max u3 u4)), max (succ u2) (succ (max u3 u4))} (AlgHom.{u1, u2, max u3 u4} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (fun (_x : AlgHom.{u1, u2, max u3 u4} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) => A -> (Prod.{u3, u4} B C)) ([anonymous].{u1, u2, max u3 u4} R A (Prod.{u3, u4} B C) _inst_1 _inst_2 (Prod.semiring.{u3, u4} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u1, u3, u4} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (AlgHom.prod.{u1, u2, u3, u4} R A B C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 f g)) (Pi.prod.{u2, u3, u4} A (fun (ᾰ : A) => B) (fun (ᾰ : A) => C) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (fun (_x : AlgHom.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) => A -> B) ([anonymous].{u1, u2, u3} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) f) (coeFn.{max (succ u2) (succ u4), max (succ u2) (succ u4)} (AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (fun (_x : AlgHom.{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) => A -> C) ([anonymous].{u1, u2, u4} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) g))
 but is expected to have type
-  forall {R : Type.{u4}} {A : Type.{u3}} {B : Type.{u2}} {C : Type.{u1}} [_inst_1 : CommSemiring.{u4} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u4, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u4, u2} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u1} C] [_inst_7 : Algebra.{u4, u1} R C _inst_1 _inst_6] (f : AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (g : AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (forall (ᾰ : A), (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : A) => Prod.{u2, u1} B C) ᾰ) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u3, max (succ u2) (succ u1)} (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : A) => Prod.{u2, u1} B C) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u4, u3, max u2 u1} (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) R A (Prod.{u2, u1} B C) (SMulZeroClass.toSMul.{u4, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u4, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u4, u3} R A (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3))))) (SMulZeroClass.toSMul.{u4, max u2 u1} R (Prod.{u2, u1} B C) (AddMonoid.toZero.{max u2 u1} (Prod.{u2, u1} B C) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))))) (DistribSMul.toSMulZeroClass.{u4, max u2 u1} R (Prod.{u2, u1} B C) (AddMonoid.toAddZeroClass.{max u2 u1} (Prod.{u2, u1} B C) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))))) (DistribMulAction.toDistribSMul.{u4, max u2 u1} R (Prod.{u2, u1} B C) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6))))) (Module.toDistribMulAction.{u4, max u2 u1} R (Prod.{u2, u1} B C) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))) (Algebra.toModule.{u4, max u2 u1} R (Prod.{u2, u1} B C) _inst_1 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u4, u3, max u2 u1} (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) R A (Prod.{u2, u1} B C) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6))))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3)) (Module.toDistribMulAction.{u4, max u2 u1} R (Prod.{u2, u1} B C) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))) (Algebra.toModule.{u4, max u2 u1} R (Prod.{u2, u1} B C) _inst_1 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7))) (SemilinearMapClass.distribMulActionHomClass.{u4, u3, max u2 u1, max (max u3 u2) u1} R A (Prod.{u2, u1} B C) (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3) (Algebra.toModule.{u4, max u2 u1} R (Prod.{u2, u1} B C) _inst_1 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (AlgHomClass.linearMapClass.{u4, u3, max u2 u1, max (max u3 u2) u1} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (AlgHom.algHomClass.{u4, u3, max u2 u1} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)))))) (AlgHom.prod.{u4, u3, u2, u1} R A B C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 f g)) (Pi.prod.{u3, u2, u1} A (fun (ᾰ : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : A) => B) ᾰ) (fun (ᾰ : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : A) => C) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : A) => B) _x) (SMulHomClass.toFunLike.{max u3 u2, u4, u3, u2} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) R A B (SMulZeroClass.toSMul.{u4, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u4, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u4, u3} R A (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3))))) (SMulZeroClass.toSMul.{u4, u2} R B (AddMonoid.toZero.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (DistribSMul.toSMulZeroClass.{u4, u2} R B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (DistribMulAction.toDistribSMul.{u4, u2} R B (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)))) (Module.toDistribMulAction.{u4, u2} R B (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (Algebra.toModule.{u4, u2} R B _inst_1 _inst_4 _inst_5))))) (DistribMulActionHomClass.toSMulHomClass.{max u3 u2, u4, u3, u2} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) R A B (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3)) (Module.toDistribMulAction.{u4, u2} R B (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (Algebra.toModule.{u4, u2} R B _inst_1 _inst_4 _inst_5)) (SemilinearMapClass.distribMulActionHomClass.{u4, u3, u2, max u3 u2} R A B (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3) (Algebra.toModule.{u4, u2} R B _inst_1 _inst_4 _inst_5) (AlgHomClass.linearMapClass.{u4, u3, u2, max u3 u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5 (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (AlgHom.algHomClass.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5))))) f) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : A) => C) _x) (SMulHomClass.toFunLike.{max u3 u1, u4, u3, u1} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) R A C (SMulZeroClass.toSMul.{u4, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u4, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u4, u3} R A (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3))))) (SMulZeroClass.toSMul.{u4, u1} R C (AddMonoid.toZero.{u1} C (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))))) (DistribSMul.toSMulZeroClass.{u4, u1} R C (AddMonoid.toAddZeroClass.{u1} C (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))))) (DistribMulAction.toDistribSMul.{u4, u1} R C (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6)))) (Module.toDistribMulAction.{u4, u1} R C (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))) (Algebra.toModule.{u4, u1} R C _inst_1 _inst_6 _inst_7))))) (DistribMulActionHomClass.toSMulHomClass.{max u3 u1, u4, u3, u1} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) R A C (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3)) (Module.toDistribMulAction.{u4, u1} R C (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))) (Algebra.toModule.{u4, u1} R C _inst_1 _inst_6 _inst_7)) (SemilinearMapClass.distribMulActionHomClass.{u4, u3, u1, max u3 u1} R A C (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3) (Algebra.toModule.{u4, u1} R C _inst_1 _inst_6 _inst_7) (AlgHomClass.linearMapClass.{u4, u3, u1, max u3 u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7 (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (AlgHom.algHomClass.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7))))) g))
+  forall {R : Type.{u4}} {A : Type.{u3}} {B : Type.{u2}} {C : Type.{u1}} [_inst_1 : CommSemiring.{u4} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u4, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u4, u2} R B _inst_1 _inst_4] [_inst_6 : Semiring.{u1} C] [_inst_7 : Algebra.{u4, u1} R C _inst_1 _inst_6] (f : AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (g : AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7), Eq.{max (max (succ u3) (succ u2)) (succ u1)} (forall (ᾰ : A), (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => Prod.{u2, u1} B C) ᾰ) (FunLike.coe.{max (max (succ u3) (succ u2)) (succ u1), succ u3, max (succ u2) (succ u1)} (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => Prod.{u2, u1} B C) _x) (SMulHomClass.toFunLike.{max (max u3 u2) u1, u4, u3, max u2 u1} (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) R A (Prod.{u2, u1} B C) (SMulZeroClass.toSMul.{u4, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u4, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u4, u3} R A (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3))))) (SMulZeroClass.toSMul.{u4, max u2 u1} R (Prod.{u2, u1} B C) (AddMonoid.toZero.{max u2 u1} (Prod.{u2, u1} B C) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))))) (DistribSMul.toSMulZeroClass.{u4, max u2 u1} R (Prod.{u2, u1} B C) (AddMonoid.toAddZeroClass.{max u2 u1} (Prod.{u2, u1} B C) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))))) (DistribMulAction.toDistribSMul.{u4, max u2 u1} R (Prod.{u2, u1} B C) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6))))) (Module.toDistribMulAction.{u4, max u2 u1} R (Prod.{u2, u1} B C) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))) (Algebra.toModule.{u4, max u2 u1} R (Prod.{u2, u1} B C) _inst_1 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u3 u2) u1, u4, u3, max u2 u1} (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) R A (Prod.{u2, u1} B C) (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (AddCommMonoid.toAddMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6))))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3)) (Module.toDistribMulAction.{u4, max u2 u1} R (Prod.{u2, u1} B C) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))) (Algebra.toModule.{u4, max u2 u1} R (Prod.{u2, u1} B C) _inst_1 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7))) (SemilinearMapClass.distribMulActionHomClass.{u4, u3, max u2 u1, max (max u3 u2) u1} R A (Prod.{u2, u1} B C) (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u1} (Prod.{u2, u1} B C) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Semiring.toNonAssocSemiring.{max u2 u1} (Prod.{u2, u1} B C) (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6)))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3) (Algebra.toModule.{u4, max u2 u1} R (Prod.{u2, u1} B C) _inst_1 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (AlgHomClass.linearMapClass.{u4, u3, max u2 u1, max (max u3 u2) u1} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7) (AlgHom.{u4, u3, max u1 u2} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)) (AlgHom.algHomClass.{u4, u3, max u2 u1} R A (Prod.{u2, u1} B C) _inst_1 _inst_2 (Prod.instSemiringProd.{u2, u1} B C _inst_4 _inst_6) _inst_3 (Prod.algebra.{u4, u2, u1} R B C _inst_1 _inst_4 _inst_5 _inst_6 _inst_7)))))) (AlgHom.prod.{u4, u3, u2, u1} R A B C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 f g)) (Pi.prod.{u3, u2, u1} A (fun (ᾰ : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => B) ᾰ) (fun (ᾰ : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => C) ᾰ) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => B) _x) (SMulHomClass.toFunLike.{max u3 u2, u4, u3, u2} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) R A B (SMulZeroClass.toSMul.{u4, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u4, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u4, u3} R A (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3))))) (SMulZeroClass.toSMul.{u4, u2} R B (AddMonoid.toZero.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (DistribSMul.toSMulZeroClass.{u4, u2} R B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (DistribMulAction.toDistribSMul.{u4, u2} R B (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)))) (Module.toDistribMulAction.{u4, u2} R B (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (Algebra.toModule.{u4, u2} R B _inst_1 _inst_4 _inst_5))))) (DistribMulActionHomClass.toSMulHomClass.{max u3 u2, u4, u3, u2} (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) R A B (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3)) (Module.toDistribMulAction.{u4, u2} R B (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (Algebra.toModule.{u4, u2} R B _inst_1 _inst_4 _inst_5)) (SemilinearMapClass.distribMulActionHomClass.{u4, u3, u2, max u3 u2} R A B (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3) (Algebra.toModule.{u4, u2} R B _inst_1 _inst_4 _inst_5) (AlgHomClass.linearMapClass.{u4, u3, u2, max u3 u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5 (AlgHom.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5) (AlgHom.algHomClass.{u4, u3, u2} R A B _inst_1 _inst_2 _inst_4 _inst_3 _inst_5))))) f) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) A (fun (_x : A) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2187 : A) => C) _x) (SMulHomClass.toFunLike.{max u3 u1, u4, u3, u1} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) R A C (SMulZeroClass.toSMul.{u4, u3} R A (AddMonoid.toZero.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribSMul.toSMulZeroClass.{u4, u3} R A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (DistribMulAction.toDistribSMul.{u4, u3} R A (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3))))) (SMulZeroClass.toSMul.{u4, u1} R C (AddMonoid.toZero.{u1} C (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))))) (DistribSMul.toSMulZeroClass.{u4, u1} R C (AddMonoid.toAddZeroClass.{u1} C (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))))) (DistribMulAction.toDistribSMul.{u4, u1} R C (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6)))) (Module.toDistribMulAction.{u4, u1} R C (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))) (Algebra.toModule.{u4, u1} R C _inst_1 _inst_6 _inst_7))))) (DistribMulActionHomClass.toSMulHomClass.{max u3 u1, u4, u3, u1} (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) R A C (MonoidWithZero.toMonoid.{u4} R (Semiring.toMonoidWithZero.{u4} R (CommSemiring.toSemiring.{u4} R _inst_1))) (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)))) (AddCommMonoid.toAddMonoid.{u1} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6)))) (Module.toDistribMulAction.{u4, u3} R A (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3)) (Module.toDistribMulAction.{u4, u1} R C (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))) (Algebra.toModule.{u4, u1} R C _inst_1 _inst_6 _inst_7)) (SemilinearMapClass.distribMulActionHomClass.{u4, u3, u1, max u3 u1} R A C (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (CommSemiring.toSemiring.{u4} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_6))) (Algebra.toModule.{u4, u3} R A _inst_1 _inst_2 _inst_3) (Algebra.toModule.{u4, u1} R C _inst_1 _inst_6 _inst_7) (AlgHomClass.linearMapClass.{u4, u3, u1, max u3 u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7 (AlgHom.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7) (AlgHom.algHomClass.{u4, u3, u1} R A C _inst_1 _inst_2 _inst_6 _inst_3 _inst_7))))) g))
 Case conversion may be inaccurate. Consider using '#align alg_hom.coe_prod AlgHom.coe_prodₓ'. -/
 theorem coe_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : ⇑(f.Prod g) = Pi.prod f g :=
   rfl
Diff
@@ -65,7 +65,7 @@ variable {R A B}
 lean 3 declaration is
   forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} A B) (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ u1) (succ (max u2 u3))} (RingHom.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) (fun (_x : RingHom.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) => R -> (Prod.{u2, u3} A B)) (RingHom.hasCoeToFun.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) (algebraMap.{u1, max u2 u3} R (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u2, u3} A B (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (fun (_x : RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) => R -> A) (RingHom.hasCoeToFun.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (algebraMap.{u1, u2} R A _inst_1 _inst_2 _inst_3) r) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) (fun (_x : RingHom.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) => R -> B) (RingHom.hasCoeToFun.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) (algebraMap.{u1, u3} R B _inst_1 _inst_4 _inst_5) r))
 but is expected to have type
-  forall {R : Type.{u1}} {A : Type.{u3}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u1, u2} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u3) (succ u2)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Prod.{u3, u2} A B) r) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Prod.{u3, u2} A B) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))))) (algebraMap.{u1, max u2 u3} R (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u3, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => B) r) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2) (RingHom.instRingHomClassRingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (algebraMap.{u1, u3} R A _inst_1 _inst_2 _inst_3) r) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => B) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4) (RingHom.instRingHomClassRingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (algebraMap.{u1, u2} R B _inst_1 _inst_4 _inst_5) r))
+  forall {R : Type.{u1}} {A : Type.{u3}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u1, u2} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u3) (succ u2)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Prod.{u3, u2} A B) r) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => Prod.{u3, u2} A B) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))))) (algebraMap.{u1, max u2 u3} R (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u3, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => B) r) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => A) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2) (RingHom.instRingHomClassRingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (algebraMap.{u1, u3} R A _inst_1 _inst_2 _inst_3) r) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : R) => B) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4) (RingHom.instRingHomClassRingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (algebraMap.{u1, u2} R B _inst_1 _inst_4 _inst_5) r))
 Case conversion may be inaccurate. Consider using '#align prod.algebra_map_apply Prod.algebraMap_applyₓ'. -/
 @[simp]
 theorem algebraMap_apply (r : R) : algebraMap R (A × B) r = (algebraMap R A r, algebraMap R B r) :=
Diff
@@ -65,7 +65,7 @@ variable {R A B}
 lean 3 declaration is
   forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} A B) (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ u1) (succ (max u2 u3))} (RingHom.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) (fun (_x : RingHom.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) => R -> (Prod.{u2, u3} A B)) (RingHom.hasCoeToFun.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) (algebraMap.{u1, max u2 u3} R (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u2, u3} A B (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (fun (_x : RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) => R -> A) (RingHom.hasCoeToFun.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (algebraMap.{u1, u2} R A _inst_1 _inst_2 _inst_3) r) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) (fun (_x : RingHom.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) => R -> B) (RingHom.hasCoeToFun.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) (algebraMap.{u1, u3} R B _inst_1 _inst_4 _inst_5) r))
 but is expected to have type
-  forall {R : Type.{u1}} {A : Type.{u3}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u1, u2} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u3) (succ u2)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => Prod.{u3, u2} A B) r) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => Prod.{u3, u2} A B) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))))) (algebraMap.{u1, max u2 u3} R (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u3, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => A) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => B) r) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => A) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2) (RingHom.instRingHomClassRingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (algebraMap.{u1, u3} R A _inst_1 _inst_2 _inst_3) r) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => B) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4) (RingHom.instRingHomClassRingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (algebraMap.{u1, u2} R B _inst_1 _inst_4 _inst_5) r))
+  forall {R : Type.{u1}} {A : Type.{u3}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u1, u2} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u3) (succ u2)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Prod.{u3, u2} A B) r) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => Prod.{u3, u2} A B) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))))) (algebraMap.{u1, max u2 u3} R (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u3, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => B) r) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => A) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2) (RingHom.instRingHomClassRingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (algebraMap.{u1, u3} R A _inst_1 _inst_2 _inst_3) r) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R) => B) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4) (RingHom.instRingHomClassRingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (algebraMap.{u1, u2} R B _inst_1 _inst_4 _inst_5) r))
 Case conversion may be inaccurate. Consider using '#align prod.algebra_map_apply Prod.algebraMap_applyₓ'. -/
 @[simp]
 theorem algebraMap_apply (r : R) : algebraMap R (A × B) r = (algebraMap R A r, algebraMap R B r) :=
Diff
@@ -65,7 +65,7 @@ variable {R A B}
 lean 3 declaration is
   forall {R : Type.{u1}} {A : Type.{u2}} {B : Type.{u3}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u2} A] [_inst_3 : Algebra.{u1, u2} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u3} B] [_inst_5 : Algebra.{u1, u3} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u2) (succ u3)} (Prod.{u2, u3} A B) (coeFn.{max (succ u1) (succ (max u2 u3)), max (succ u1) (succ (max u2 u3))} (RingHom.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) (fun (_x : RingHom.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) => R -> (Prod.{u2, u3} A B)) (RingHom.hasCoeToFun.{u1, max u2 u3} R (Prod.{u2, u3} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u2, u3} A B) (Prod.semiring.{u2, u3} A B _inst_2 _inst_4))) (algebraMap.{u1, max u2 u3} R (Prod.{u2, u3} A B) _inst_1 (Prod.semiring.{u2, u3} A B _inst_2 _inst_4) (Prod.algebra.{u1, u2, u3} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u2, u3} A B (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (fun (_x : RingHom.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) => R -> A) (RingHom.hasCoeToFun.{u1, u2} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} A _inst_2)) (algebraMap.{u1, u2} R A _inst_1 _inst_2 _inst_3) r) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (RingHom.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) (fun (_x : RingHom.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) => R -> B) (RingHom.hasCoeToFun.{u1, u3} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} B _inst_4)) (algebraMap.{u1, u3} R B _inst_1 _inst_4 _inst_5) r))
 but is expected to have type
-  forall {R : Type.{u1}} {A : Type.{u3}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u1, u2} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u3) (succ u2)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => Prod.{u3, u2} A B) r) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => Prod.{u3, u2} A B) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))))) (algebraMap.{u1, max u2 u3} R (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u3, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => A) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => B) r) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => A) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2) (RingHom.instRingHomClassRingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (algebraMap.{u1, u3} R A _inst_1 _inst_2 _inst_3) r) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2398 : R) => B) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4) (RingHom.instRingHomClassRingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (algebraMap.{u1, u2} R B _inst_1 _inst_4 _inst_5) r))
+  forall {R : Type.{u1}} {A : Type.{u3}} {B : Type.{u2}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : Semiring.{u3} A] [_inst_3 : Algebra.{u1, u3} R A _inst_1 _inst_2] [_inst_4 : Semiring.{u2} B] [_inst_5 : Algebra.{u1, u2} R B _inst_1 _inst_4] (r : R), Eq.{max (succ u3) (succ u2)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => Prod.{u3, u2} A B) r) (FunLike.coe.{max (max (succ u1) (succ u3)) (succ u2), succ u1, max (succ u3) (succ u2)} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => Prod.{u3, u2} A B) _x) (MulHomClass.toFunLike.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u3 u2} (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u3 u2} (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max (max u1 u3) u2, u1, max u3 u2} (RingHom.{u1, max u2 u3} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4))) R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)) (RingHom.instRingHomClassRingHom.{u1, max u3 u2} R (Prod.{u3, u2} A B) (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{max u2 u3} (Prod.{u3, u2} A B) (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4)))))) (algebraMap.{u1, max u2 u3} R (Prod.{u3, u2} A B) _inst_1 (Prod.instSemiringProd.{u3, u2} A B _inst_2 _inst_4) (Prod.algebra.{u1, u3, u2} R A B _inst_1 _inst_2 _inst_3 _inst_4 _inst_5)) r) (Prod.mk.{u3, u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => A) r) ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => B) r) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => A) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u3, u1, u3} (RingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2)) R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2) (RingHom.instRingHomClassRingHom.{u1, u3} R A (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u3} A _inst_2))))) (algebraMap.{u1, u3} R A _inst_1 _inst_2 _inst_3) r) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R (fun (_x : R) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2372 : R) => B) _x) (MulHomClass.toFunLike.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B _inst_4)) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, u2} (RingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4)) R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4) (RingHom.instRingHomClassRingHom.{u1, u2} R B (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (Semiring.toNonAssocSemiring.{u2} B _inst_4))))) (algebraMap.{u1, u2} R B _inst_1 _inst_4 _inst_5) r))
 Case conversion may be inaccurate. Consider using '#align prod.algebra_map_apply Prod.algebraMap_applyₓ'. -/
 @[simp]
 theorem algebraMap_apply (r : R) : algebraMap R (A × B) r = (algebraMap R A r, algebraMap R B r) :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau, Yury Kudryashov
 
 ! This file was ported from Lean 3 source module algebra.algebra.prod
-! leanprover-community/mathlib commit b16045e4bf61c6fd619a1a68854ab3d605dcd017
+! leanprover-community/mathlib commit 23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.Algebra.Algebra.Hom
 /-!
 # The R-algebra structure on products of R-algebras
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 The R-algebra structure on `Π i : I, A i` when each `A i` is an R-algebra.
 
 ## Main defintions

Changes in mathlib4

mathlib3
mathlib4
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -22,9 +22,7 @@ The R-algebra structure on `(i : I) → A i` when each `A i` is an R-algebra.
 
 
 variable {R A B C : Type*}
-
 variable [CommSemiring R]
-
 variable [Semiring A] [Algebra R A] [Semiring B] [Algebra R B] [Semiring C] [Algebra R C]
 
 namespace Prod
chore: Move LinearMap.ker to a new file (#10233)

This shortens Mathlib.LinearAlgebra.Basic, which is both longer than we like and doesn't have a clear scope.

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau, Yury Kudryashov
 -/
 import Mathlib.Algebra.Algebra.Hom
+import Mathlib.Algebra.Module.Prod
 
 #align_import algebra.algebra.prod from "leanprover-community/mathlib"@"28aa996fc6fb4317f0083c4e6daf79878d81be33"
 
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
@@ -93,7 +93,7 @@ theorem snd_prod (f : A →ₐ[R] B) (g : A →ₐ[R] C) : (snd R B C).comp (pro
 
 @[simp]
 theorem prod_fst_snd : prod (fst R A B) (snd R A B) = 1 :=
-  FunLike.coe_injective Pi.prod_fst_snd
+  DFunLike.coe_injective Pi.prod_fst_snd
 #align alg_hom.prod_fst_snd AlgHom.prod_fst_snd
 
 /-- Taking the product of two maps with the same domain is equivalent to taking the product of
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
@@ -20,7 +20,7 @@ The R-algebra structure on `(i : I) → A i` when each `A i` is an R-algebra.
 -/
 
 
-variable {R A B C : Type _}
+variable {R A B C : Type*}
 
 variable [CommSemiring R]
 
chore: ensure all instances referred to directly have explicit names (#6423)

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

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

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

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

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

Diff
@@ -33,7 +33,7 @@ variable (R A B)
 open Algebra
 
 instance algebra : Algebra R (A × B) :=
-  { Prod.module,
+  { Prod.instModule,
     RingHom.prod (algebraMap R A) (algebraMap R B) with
     commutes' := by
       rintro r ⟨a, b⟩
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2018 Kenny Lau. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau, Yury Kudryashov
-
-! This file was ported from Lean 3 source module algebra.algebra.prod
-! leanprover-community/mathlib commit 28aa996fc6fb4317f0083c4e6daf79878d81be33
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Algebra.Hom
 
+#align_import algebra.algebra.prod from "leanprover-community/mathlib"@"28aa996fc6fb4317f0083c4e6daf79878d81be33"
+
 /-!
 # The R-algebra structure on products of R-algebras
 
chore: fix typos (#4518)

I ran codespell Mathlib and got tired halfway through the suggestions.

Diff
@@ -15,7 +15,7 @@ import Mathlib.Algebra.Algebra.Hom
 
 The R-algebra structure on `(i : I) → A i` when each `A i` is an R-algebra.
 
-## Main defintions
+## Main definitions
 
 * `Pi.algebra`
 * `Pi.evalAlgHom`
feat: port Algebra.Algebra.Prod (#2383)

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

Dependencies 8 + 347

348 files ported (97.8%)
146399 lines ported (97.9%)
Show graph

The unported dependencies are